OSDN Git Service

Fix regression in LEAP
authorJouni Malinen <jouni@qca.qualcomm.com>
Thu, 11 Oct 2012 18:50:57 +0000 (21:50 +0300)
committerJean-Baptiste Queru <jbq@google.com>
Mon, 28 Jan 2013 21:17:05 +0000 (13:17 -0800)
Commit 458cb3019108b6cb8c0c1cab94ae6ebf244eda27 broke LEAP since it
rejects EAP-Success packet that is used within LEAP and this frame does
not have a payload. Fix LEAP by relaxing the generic EAP packet
validation if LEAP has been negotiated.

Signed-hostap: Jouni Malinen <jouni@qca.qualcomm.com>

src/eap_peer/eap.c

index 2ed74b8..a4c9b25 100644 (file)
@@ -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;
 
        /*