mirror of
https://git.kernel.org/pub/scm/network/wireless/iwd.git
synced 2024-12-22 21:22:37 +01:00
eapol: do not parse RSN for WPA1 in 1 of 4
A recent change checked the return value of ie_parse_rsne_from_data inside the ptk 1/4 handler. This seemed safe, but actually caused the eapol unit test to fail. The reason was because eapol was parsing the IEs assuming they were an RSN, when they could be a WPA IE (WPA1 not WPA2). The WPA case does not end up using the rsn_info at all, so having rsn_info uninitialized did not pose a problem. After adding the return value check it was found this fails every time for WPA1. Since the rsn_info is not needed for WPA1 we can only do the RSN parse for WPA2 and leave rsn_info uninitialized.
This commit is contained in:
parent
99923c90da
commit
0d9c9274d9
@ -1106,8 +1106,11 @@ static void eapol_handle_ptk_1_of_4(struct eapol_sm *sm,
|
|||||||
pmkid = handshake_util_find_pmkid_kde(EAPOL_KEY_DATA(ek, sm->mic_len),
|
pmkid = handshake_util_find_pmkid_kde(EAPOL_KEY_DATA(ek, sm->mic_len),
|
||||||
EAPOL_KEY_DATA_LEN(ek, sm->mic_len));
|
EAPOL_KEY_DATA_LEN(ek, sm->mic_len));
|
||||||
|
|
||||||
if (ie_parse_rsne_from_data(own_ie, own_ie[1] + 2, &rsn_info) < 0)
|
if (!sm->handshake->wpa_ie) {
|
||||||
goto error_unspecified;
|
if (ie_parse_rsne_from_data(own_ie, own_ie[1] + 2,
|
||||||
|
&rsn_info) < 0)
|
||||||
|
goto error_unspecified;
|
||||||
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Require the PMKID KDE whenever we've sent a list of PMKIDs in
|
* Require the PMKID KDE whenever we've sent a list of PMKIDs in
|
||||||
|
Loading…
Reference in New Issue
Block a user