]> git.ipfire.org Git - thirdparty/hostap.git/commitdiff
FT: Fix sm->assoc_resp_ftie storing on the AP side
authorJouni Malinen <jouni@qca.qualcomm.com>
Wed, 9 Dec 2015 22:11:00 +0000 (00:11 +0200)
committerJouni Malinen <j@w1.fi>
Wed, 9 Dec 2015 22:14:35 +0000 (00:14 +0200)
The FTIE from (Re)Association Response frame was copied before
calculating the MIC. This resulted in incorrect value being used when
comparing the EAPOL-Key msg 2/4 value in case PTK rekeying was used
after FT protocol run. Fix this by storing the element after the MIC
field has been filled in.

Signed-off-by: Jouni Malinen <jouni@qca.qualcomm.com>
src/ap/wpa_auth_ft.c

index eeaffbf635166d20767e38996c951c2bcf245d56..42242a54a2cbf758a89b7c8ebf97d7e2b744193c 100644 (file)
@@ -720,11 +720,6 @@ u8 * wpa_sm_write_assoc_resp_ies(struct wpa_state_machine *sm, u8 *pos,
        ftie_len = res;
        pos += res;
 
-       os_free(sm->assoc_resp_ftie);
-       sm->assoc_resp_ftie = os_malloc(ftie_len);
-       if (sm->assoc_resp_ftie)
-               os_memcpy(sm->assoc_resp_ftie, ftie, ftie_len);
-
        _ftie = (struct rsn_ftie *) (ftie + 2);
        if (auth_alg == WLAN_AUTH_FT)
                _ftie->mic_control[1] = 3; /* Information element count */
@@ -750,6 +745,11 @@ u8 * wpa_sm_write_assoc_resp_ies(struct wpa_state_machine *sm, u8 *pos,
                       _ftie->mic) < 0)
                wpa_printf(MSG_DEBUG, "FT: Failed to calculate MIC");
 
+       os_free(sm->assoc_resp_ftie);
+       sm->assoc_resp_ftie = os_malloc(ftie_len);
+       if (sm->assoc_resp_ftie)
+               os_memcpy(sm->assoc_resp_ftie, ftie, ftie_len);
+
        return pos;
 }