Skip to contentSkip to conversation

ieee80211: Workaround malformed 802.11 frames from AP

PATCH NAK Zhu Yi 1 participant 1 message Aug 21, 2006

Subsystems (2)
lore
Share & tools
lore

Zhu Yi

author
#0 lore raw

PATCH 7/7 ieee80211: Workaround malformed 802.11 frames from AP

Stop processing further but return success when we receive a malformed packet from the AP. We need this patch to workaround some AP bugs. For example, the beacon frames from the Orinoco AP1000 contains an IE (value = 128) with length equals to 8 but the actual frame length is only 7.

---

 net/ieee80211/ieee80211_rx.c |   17 ++++++++++-------
 1 files changed, 10 insertions(+), 7 deletions(-)

b3d142a90dbe64140e390af28117983498def99d

net/ieee80211/ieee80211_rx.c +10 -7
index d60358d..7707041 100644
@@ -1078,13 +1078,16 @@ static int ieee80211_parse_info_param(st
 
 	while (length >= sizeof(*info_element)) {
 		if (sizeof(*info_element) + info_element->len > length) {
-			IEEE80211_DEBUG_MGMT("Info elem: parse failed: "
-					     "info_element->len + 2 > left : "
-					     "info_element->len+2=%zd left=%d, id=%d.\n",
-					     info_element->len +
-					     sizeof(*info_element),
-					     length, info_element->id);
-			return 1;
+			IEEE80211_ERROR("Info elem: parse failed: "
+					"info_element->len + 2 > left : "
+					"info_element->len+2=%zd left=%d, id=%d.\n",
+					info_element->len +
+					sizeof(*info_element),
+					length, info_element->id);
+			/* We stop processing but don't return an error here
+			 * because some misbehaviour APs break this rule. ie.
+			 * Orinoco AP1000. */
+			break;
 		}
 
 		switch (info_element->id) {
Signature · 1 line
1.2.6