[PATCH] 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.

Signed-off-by: Zhu Yi <yi.zhu@intel.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
This commit is contained in:
Zhu Yi 2006-08-21 11:34:19 +08:00 committed by John W. Linville
parent 5a65694971
commit f09fc44d8c

View File

@ -1078,13 +1078,16 @@ static int ieee80211_parse_info_param(struct ieee80211_info_element
while (length >= sizeof(*info_element)) { while (length >= sizeof(*info_element)) {
if (sizeof(*info_element) + info_element->len > length) { if (sizeof(*info_element) + info_element->len > length) {
IEEE80211_DEBUG_MGMT("Info elem: parse failed: " IEEE80211_ERROR("Info elem: parse failed: "
"info_element->len + 2 > left : " "info_element->len + 2 > left : "
"info_element->len+2=%zd left=%d, id=%d.\n", "info_element->len+2=%zd left=%d, id=%d.\n",
info_element->len + info_element->len +
sizeof(*info_element), sizeof(*info_element),
length, info_element->id); length, info_element->id);
return 1; /* 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) { switch (info_element->id) {