mirror of
https://github.com/torvalds/linux.git
synced 2024-11-11 06:31:49 +00:00
[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:
parent
5a65694971
commit
f09fc44d8c
@ -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) {
|
||||||
|
Loading…
Reference in New Issue
Block a user