diff options
author | Felix Fietkau <nbd@openwrt.org> | 2009-01-25 00:37:41 +0000 |
---|---|---|
committer | Felix Fietkau <nbd@openwrt.org> | 2009-01-25 00:37:41 +0000 |
commit | 87db54da68aa2614122a0f2f2d4c79722dad2bb9 (patch) | |
tree | 022b7bd5bc73da3bce22c057ba58b97b4596e5c1 /package/madwifi/patches/391-vap_auth.patch | |
parent | 28abf79c44dc8a464d9573a9dc0c657ad5a35b60 (diff) | |
download | upstream-87db54da68aa2614122a0f2f2d4c79722dad2bb9.tar.gz upstream-87db54da68aa2614122a0f2f2d4c79722dad2bb9.tar.bz2 upstream-87db54da68aa2614122a0f2f2d4c79722dad2bb9.zip |
madwifi: fix the long standing bug that is triggered by nodes getting a timeout on one vap, then moving to another
SVN-Revision: 14171
Diffstat (limited to 'package/madwifi/patches/391-vap_auth.patch')
-rw-r--r-- | package/madwifi/patches/391-vap_auth.patch | 29 |
1 files changed, 29 insertions, 0 deletions
diff --git a/package/madwifi/patches/391-vap_auth.patch b/package/madwifi/patches/391-vap_auth.patch new file mode 100644 index 0000000000..acee271c33 --- /dev/null +++ b/package/madwifi/patches/391-vap_auth.patch @@ -0,0 +1,29 @@ +--- a/net80211/ieee80211_input.c ++++ b/net80211/ieee80211_input.c +@@ -1374,7 +1386,7 @@ ieee80211_auth_open(struct ieee80211_nod + vap->iv_stats.is_rx_bad_auth++; /* XXX maybe a unique error? */ + if (vap->iv_opmode == IEEE80211_M_HOSTAP) { + if (ni == vap->iv_bss) { +- ni = ieee80211_dup_bss(vap, wh->i_addr2, 0); ++ ni = ieee80211_dup_bss(vap, wh->i_addr2, 1); + if (ni == NULL) + return; + tmpnode = 1; +@@ -1762,6 +1774,8 @@ ieee80211_ssid_mismatch(struct ieee80211 + } + + #define IEEE80211_VERIFY_SSID(_ni, _ssid) do { \ ++ if ((_ni)->ni_esslen == 0) \ ++ return; \ + if ((_ssid)[1] != 0 && \ + ((_ssid)[1] != (_ni)->ni_esslen || \ + memcmp((_ssid) + 2, (_ni)->ni_essid, (_ssid)[1]) != 0)) { \ +@@ -1776,6 +1790,8 @@ ieee80211_ssid_mismatch(struct ieee80211 + } while (0) + #else /* !IEEE80211_DEBUG */ + #define IEEE80211_VERIFY_SSID(_ni, _ssid) do { \ ++ if ((_ni)->ni_esslen == 0) \ ++ return; \ + if ((_ssid)[1] != 0 && \ + ((_ssid)[1] != (_ni)->ni_esslen || \ + memcmp((_ssid) + 2, (_ni)->ni_essid, (_ssid)[1]) != 0)) { \ |