PERFORCE change 135972 for review
Sam Leffler
sam at FreeBSD.org
Fri Feb 22 17:25:13 UTC 2008
http://perforce.freebsd.org/chv.cgi?CH=135972
Change 135972 by sam at sam_ebb on 2008/02/22 17:24:37
o discard auth frames w/ a broadcast bssid
o move [re]assoc req checks for bssid + authentication up to
be before all the hard work
Affected files ...
.. //depot/projects/vap/sys/net80211/ieee80211_hostap.c#16 edit
Differences ...
==== //depot/projects/vap/sys/net80211/ieee80211_hostap.c#16 (text+ko) ====
@@ -1847,6 +1847,12 @@
vap->iv_stats.is_rx_mgtdiscard++;
return;
}
+ if (!IEEE80211_ADDR_EQ(wh->i_addr3, vap->iv_bss->ni_bssid)) {
+ IEEE80211_DISCARD(vap, IEEE80211_MSG_ANY,
+ wh, NULL, "%s", "wrong bssid");
+ vap->iv_stats.is_rx_wrongbss++; /*XXX unique stat?*/
+ return;
+ }
/*
* auth frame format
* [2] algorithm
@@ -1919,7 +1925,12 @@
vap->iv_stats.is_rx_mgtdiscard++;
return;
}
-
+ if (!IEEE80211_ADDR_EQ(wh->i_addr3, vap->iv_bss->ni_bssid)) {
+ IEEE80211_DISCARD(vap, IEEE80211_MSG_ANY,
+ wh, NULL, "%s", "wrong bssid");
+ vap->iv_stats.is_rx_assoc_bss++;
+ return;
+ }
if (subtype == IEEE80211_FC0_SUBTYPE_REASSOC_REQ) {
reassoc = 1;
resp = IEEE80211_FC0_SUBTYPE_REASSOC_RESP;
@@ -1927,6 +1938,17 @@
reassoc = 0;
resp = IEEE80211_FC0_SUBTYPE_ASSOC_RESP;
}
+ if (ni == vap->iv_bss) {
+ IEEE80211_NOTE_MAC(vap, IEEE80211_MSG_ANY, wh->i_addr2,
+ "deny %s request, sta not authenticated",
+ reassoc ? "reassoc" : "assoc");
+ ieee80211_send_error(ni, wh->i_addr2,
+ IEEE80211_FC0_SUBTYPE_DEAUTH,
+ IEEE80211_REASON_ASSOC_NOT_AUTHED);
+ vap->iv_stats.is_rx_assoc_notauth++;
+ return;
+ }
+
/*
* asreq frame format
* [2] capability information
@@ -1940,12 +1962,6 @@
* [tlv] Atheros capabilities
*/
IEEE80211_VERIFY_LENGTH(efrm - frm, (reassoc ? 10 : 4), return);
- if (!IEEE80211_ADDR_EQ(wh->i_addr3, vap->iv_bss->ni_bssid)) {
- IEEE80211_DISCARD(vap, IEEE80211_MSG_ANY,
- wh, NULL, "%s", "wrong bssid");
- vap->iv_stats.is_rx_assoc_bss++;
- return;
- }
capinfo = le16toh(*(uint16_t *)frm); frm += 2;
lintval = le16toh(*(uint16_t *)frm); frm += 2;
if (reassoc)
@@ -1999,16 +2015,6 @@
return); /* XXX just NULL out? */
}
- if (ni == vap->iv_bss) {
- IEEE80211_NOTE_MAC(vap, IEEE80211_MSG_ANY, wh->i_addr2,
- "deny %s request, sta not authenticated",
- reassoc ? "reassoc" : "assoc");
- ieee80211_send_error(ni, wh->i_addr2,
- IEEE80211_FC0_SUBTYPE_DEAUTH,
- IEEE80211_REASON_ASSOC_NOT_AUTHED);
- vap->iv_stats.is_rx_assoc_notauth++;
- return;
- }
if ((vap->iv_flags & IEEE80211_F_WPA) &&
!wpa_assocreq(ni, &rsnparms, wh, wpa, rsn, capinfo))
return;
More information about the p4-projects
mailing list