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-a3cf2f4a3e73
master
Felix Fietkau 2012-01-24 01:49:23 +00:00
parent 1bf0a3ebdf
commit a761723620
3 changed files with 21 additions and 3 deletions

View File

@ -160,3 +160,21 @@
if (bss != &drv->first_bss) {
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);

View File

@ -123,7 +123,7 @@
struct sta_info *sta, int success)
--- a/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_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;
}

View File

@ -1,6 +1,6 @@
--- a/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);
ctr = pairwise ? sm->TimeoutCtr : sm->GTimeoutCtr;