diff options
author | sam <sam@FreeBSD.org> | 2003-08-13 21:49:35 +0000 |
---|---|---|
committer | sam <sam@FreeBSD.org> | 2003-08-13 21:49:35 +0000 |
commit | e588332388c1b9727f5a65662fb2e12046735134 (patch) | |
tree | 9d8f10768fc925366eb5e5e959e7da6fd503af4c /sys/net80211 | |
parent | 238d3298f59d2e9e66d6fd5c859854349c58fdae (diff) | |
download | FreeBSD-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.c | 8 |
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); |