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 | 21ba780a95bfe75069f363a3a70211c4f8ec8aff (patch) | |
tree | b14a20f7e774bb0b980249503014e03b029fcabc /package/madwifi/patches/391-vap_auth.patch | |
parent | 5b0b3ea806fc4d048ae2eba6ca01522c4025864b (diff) | |
download | upstream-21ba780a95bfe75069f363a3a70211c4f8ec8aff.tar.gz upstream-21ba780a95bfe75069f363a3a70211c4f8ec8aff.tar.bz2 upstream-21ba780a95bfe75069f363a3a70211c4f8ec8aff.zip |
madwifi: fix the long standing bug that is triggered by nodes getting a timeout on one vap, then moving to another
git-svn-id: svn://svn.openwrt.org/openwrt/trunk@14171 3c298f89-4303-0410-b956-a3cf2f4a3e73
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)) { \ |