hostapd: merge an upstream workaround for broken clients sending the wrong wpa type (should fix #9561)
git-svn-id: svn://svn.openwrt.org/openwrt/trunk@29876 3c298f89-4303-0410-b956-a3cf2f4a3e73master
parent
1bf0a3ebdf
commit
a761723620
|
@ -160,3 +160,21 @@
|
||||||
|
|
||||||
if (bss != &drv->first_bss) {
|
if (bss != &drv->first_bss) {
|
||||||
struct i802_bss *tbss;
|
struct i802_bss *tbss;
|
||||||
|
--- a/src/ap/wpa_auth.c
|
||||||
|
+++ b/src/ap/wpa_auth.c
|
||||||
|
@@ -776,7 +776,14 @@ void wpa_receive(struct wpa_authenticato
|
||||||
|
}
|
||||||
|
|
||||||
|
if (sm->wpa == WPA_VERSION_WPA2) {
|
||||||
|
- if (key->type != EAPOL_KEY_TYPE_RSN) {
|
||||||
|
+ if (key->type == EAPOL_KEY_TYPE_WPA) {
|
||||||
|
+ /*
|
||||||
|
+ * Some deployed station implementations seem to send
|
||||||
|
+ * msg 4/4 with incorrect type value in WPA2 mode.
|
||||||
|
+ */
|
||||||
|
+ wpa_printf(MSG_DEBUG, "Workaround: Allow EAPOL-Key "
|
||||||
|
+ "with unexpected WPA type in RSN mode");
|
||||||
|
+ } else if (key->type != EAPOL_KEY_TYPE_RSN) {
|
||||||
|
wpa_printf(MSG_DEBUG, "Ignore EAPOL-Key with "
|
||||||
|
"unexpected type %d in RSN mode",
|
||||||
|
key->type);
|
||||||
|
|
|
@ -123,7 +123,7 @@
|
||||||
struct sta_info *sta, int success)
|
struct sta_info *sta, int success)
|
||||||
--- a/src/ap/wpa_auth.c
|
--- a/src/ap/wpa_auth.c
|
||||||
+++ b/src/ap/wpa_auth.c
|
+++ b/src/ap/wpa_auth.c
|
||||||
@@ -2534,6 +2534,7 @@ static int wpa_cipher_bits(int cipher)
|
@@ -2541,6 +2541,7 @@ static int wpa_cipher_bits(int cipher)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -131,7 +131,7 @@
|
||||||
|
|
||||||
#define RSN_SUITE "%02x-%02x-%02x-%d"
|
#define RSN_SUITE "%02x-%02x-%02x-%d"
|
||||||
#define RSN_SUITE_ARG(s) \
|
#define RSN_SUITE_ARG(s) \
|
||||||
@@ -2697,7 +2698,7 @@ int wpa_get_mib_sta(struct wpa_state_mac
|
@@ -2704,7 +2705,7 @@ int wpa_get_mib_sta(struct wpa_state_mac
|
||||||
|
|
||||||
return len;
|
return len;
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
--- a/src/ap/wpa_auth.c
|
--- a/src/ap/wpa_auth.c
|
||||||
+++ b/src/ap/wpa_auth.c
|
+++ b/src/ap/wpa_auth.c
|
||||||
@@ -1330,7 +1330,7 @@ static void wpa_send_eapol(struct wpa_au
|
@@ -1337,7 +1337,7 @@ static void wpa_send_eapol(struct wpa_au
|
||||||
keyidx, encr, 0);
|
keyidx, encr, 0);
|
||||||
|
|
||||||
ctr = pairwise ? sm->TimeoutCtr : sm->GTimeoutCtr;
|
ctr = pairwise ? sm->TimeoutCtr : sm->GTimeoutCtr;
|
||||||
|
|
Loading…
Reference in New Issue