summaryrefslogtreecommitdiffstats
path: root/sys/net80211
diff options
context:
space:
mode:
authorsam <sam@FreeBSD.org>2003-08-13 21:49:35 +0000
committersam <sam@FreeBSD.org>2003-08-13 21:49:35 +0000
commite588332388c1b9727f5a65662fb2e12046735134 (patch)
tree9d8f10768fc925366eb5e5e959e7da6fd503af4c /sys/net80211
parent238d3298f59d2e9e66d6fd5c859854349c58fdae (diff)
downloadFreeBSD-src-e588332388c1b9727f5a65662fb2e12046735134.zip
FreeBSD-src-e588332388c1b9727f5a65662fb2e12046735134.tar.gz
Use IEEE80211_RATE_MAXSIZE instead of IEEE80211_RATE_SIZE to validate the
rate set element id from an AP. This allows stations to associate with AP's that violate the 802.11 spec by sending >8 rates. This corrects a recent regression; older code did likewise.
Diffstat (limited to 'sys/net80211')
-rw-r--r--sys/net80211/ieee80211_input.c8
1 files changed, 4 insertions, 4 deletions
diff --git a/sys/net80211/ieee80211_input.c b/sys/net80211/ieee80211_input.c
index f16ca2e..542d455 100644
--- a/sys/net80211/ieee80211_input.c
+++ b/sys/net80211/ieee80211_input.c
@@ -595,7 +595,7 @@ ieee80211_recv_mgmt(struct ieee80211com *ic, struct mbuf *m0, int subtype,
}
frm += frm[1] + 2;
}
- IEEE80211_VERIFY_ELEMENT(rates, IEEE80211_RATE_SIZE);
+ IEEE80211_VERIFY_ELEMENT(rates, IEEE80211_RATE_MAXSIZE);
IEEE80211_VERIFY_ELEMENT(ssid, IEEE80211_NWID_LEN);
if (
#if IEEE80211_CHAN_MAX < 255
@@ -716,7 +716,7 @@ ieee80211_recv_mgmt(struct ieee80211com *ic, struct mbuf *m0, int subtype,
}
frm += frm[1] + 2;
}
- IEEE80211_VERIFY_ELEMENT(rates, IEEE80211_RATE_SIZE);
+ IEEE80211_VERIFY_ELEMENT(rates, IEEE80211_RATE_MAXSIZE);
IEEE80211_VERIFY_ELEMENT(ssid, IEEE80211_NWID_LEN);
if (ssid[1] != 0 &&
(ssid[1] != ic->ic_bss->ni_esslen ||
@@ -889,7 +889,7 @@ ieee80211_recv_mgmt(struct ieee80211com *ic, struct mbuf *m0, int subtype,
}
frm += frm[1] + 2;
}
- IEEE80211_VERIFY_ELEMENT(rates, IEEE80211_RATE_SIZE);
+ IEEE80211_VERIFY_ELEMENT(rates, IEEE80211_RATE_MAXSIZE);
IEEE80211_VERIFY_ELEMENT(ssid, IEEE80211_NWID_LEN);
if (ssid[1] != ic->ic_bss->ni_esslen ||
memcmp(ssid + 2, ic->ic_bss->ni_essid, ssid[1]) != 0) {
@@ -1017,7 +1017,7 @@ ieee80211_recv_mgmt(struct ieee80211com *ic, struct mbuf *m0, int subtype,
frm += frm[1] + 2;
}
- IEEE80211_VERIFY_ELEMENT(rates, IEEE80211_RATE_SIZE);
+ IEEE80211_VERIFY_ELEMENT(rates, IEEE80211_RATE_MAXSIZE);
ieee80211_setup_rates(ic, ni, rates, xrates,
IEEE80211_F_DOSORT | IEEE80211_F_DOFRATE |
IEEE80211_F_DONEGO | IEEE80211_F_DODEL);
OpenPOWER on IntegriCloud