hostapd: merge an upstream workaround for broken clients sending the wrong wpa type...
authorFelix Fietkau <nbd@openwrt.org>
Tue, 24 Jan 2012 01:49:23 +0000 (01:49 +0000)
committerFelix Fietkau <nbd@openwrt.org>
Tue, 24 Jan 2012 01:49:23 +0000 (01:49 +0000)
SVN-Revision: 29876

package/hostapd/patches/100-pending_work.patch
package/hostapd/patches/560-disable_ctrl_iface_mib.patch
package/hostapd/patches/740-group_key_timeout.patch

index d9824f317806df6e5bf0e35204b29713d3397281..8b318190fd511e26098f07e3a4519a5bc5f41f0d 100644 (file)
  
        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);
index 22f282ab5b296eb3412b8e6ee653cd3a8cb675ca..306c05117864cfff3047f882a6de7c043a74eda8 100644 (file)
                                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)
        }
  }
  
  
  #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;
  }
index 694b0661fba16d76e81830ec6d9ad7350e0c4751..c1493952cddb9efc5a8dc0f12278d469d73e7ff0 100644 (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;