hostapd: merge some pending fixes (fixes assoc errors when moving between vaps of...
authorFelix Fietkau <nbd@openwrt.org>
Thu, 25 Oct 2012 15:13:10 +0000 (15:13 +0000)
committerFelix Fietkau <nbd@openwrt.org>
Thu, 25 Oct 2012 15:13:10 +0000 (15:13 +0000)
Backport of r33919

SVN-Revision: 33925

package/hostapd/patches/100-pending_work.patch
package/hostapd/patches/410-multicall.patch

index 1c97a64caaf6a76feab61e58419093c735eab41f..73949dd386f669db762d1b5dac1d89b6a27cc897 100644 (file)
  
        if (bss != &drv->first_bss) {
                struct i802_bss *tbss;
+--- a/src/ap/drv_callbacks.c
++++ b/src/ap/drv_callbacks.c
+@@ -672,12 +672,15 @@ static void hostapd_event_eapol_rx(struc
+                                  const u8 *data, size_t data_len)
+ {
+       struct hostapd_iface *iface = hapd->iface;
++      struct sta_info *sta;
+       size_t j;
+       for (j = 0; j < iface->num_bss; j++) {
+-              if (ap_get_sta(iface->bss[j], src)) {
+-                      hapd = iface->bss[j];
+-                      break;
++              if ((sta = ap_get_sta(iface->bss[j], src))) {
++                      if (sta->flags & WLAN_STA_ASSOC) {
++                              hapd = iface->bss[j];
++                              break;
++                      }
+               }
+       }
+--- a/src/eap_peer/eap.c
++++ b/src/eap_peer/eap.c
+@@ -348,6 +348,7 @@ SM_STATE(EAP, METHOD)
+ {
+       struct wpabuf *eapReqData;
+       struct eap_method_ret ret;
++      int min_len = 1;
+       SM_ENTRY(EAP, METHOD);
+       if (sm->m == NULL) {
+@@ -356,7 +357,9 @@ SM_STATE(EAP, METHOD)
+       }
+       eapReqData = eapol_get_eapReqData(sm);
+-      if (!eap_hdr_len_valid(eapReqData, 1))
++      if (sm->m->vendor == EAP_VENDOR_IETF && sm->m->method == EAP_TYPE_LEAP)
++              min_len = 0; /* LEAP uses EAP-Success without payload */
++      if (!eap_hdr_len_valid(eapReqData, min_len))
+               return;
+       /*
index 7900428aea9b311a88257b996b0e32cecb54555a..a774603b40c53ac86bf6a57b17ad6610ff8e7834 100644 (file)
  /*
 --- a/src/ap/drv_callbacks.c
 +++ b/src/ap/drv_callbacks.c
-@@ -685,8 +685,8 @@ static void hostapd_event_eapol_rx(struc
+@@ -688,8 +688,8 @@ static void hostapd_event_eapol_rx(struc
  }