mirror of
https://git.kernel.org/pub/scm/network/wireless/iwd.git
synced 2024-11-26 02:19:26 +01:00
ft: check authenticator_ie from ft_ds_info, not handshake
The handshake contains the current BSS's RSNE/WPA which may differ from the FT-over-DS target. When verifying the target BSS's RSNE/WPA IE needs to be checked, not the current BSS.
This commit is contained in:
parent
ae358bd524
commit
27be63fe65
10
src/ft.c
10
src/ft.c
@ -354,6 +354,7 @@ static bool ft_verify_rsne(const uint8_t *rsne, const uint8_t *pmk_r0_name,
|
|||||||
}
|
}
|
||||||
|
|
||||||
static int ft_parse_ies(struct handshake_state *hs,
|
static int ft_parse_ies(struct handshake_state *hs,
|
||||||
|
const uint8_t *authenticator_ie,
|
||||||
const uint8_t *ies, size_t ies_len,
|
const uint8_t *ies, size_t ies_len,
|
||||||
const uint8_t **mde_out,
|
const uint8_t **mde_out,
|
||||||
const uint8_t **fte_out)
|
const uint8_t **fte_out)
|
||||||
@ -394,8 +395,7 @@ static int ft_parse_ies(struct handshake_state *hs,
|
|||||||
is_rsn = hs->supplicant_ie != NULL;
|
is_rsn = hs->supplicant_ie != NULL;
|
||||||
|
|
||||||
if (is_rsn) {
|
if (is_rsn) {
|
||||||
if (!ft_verify_rsne(rsne, hs->pmk_r0_name,
|
if (!ft_verify_rsne(rsne, hs->pmk_r0_name, authenticator_ie))
|
||||||
hs->authenticator_ie))
|
|
||||||
goto ft_error;
|
goto ft_error;
|
||||||
} else if (rsne)
|
} else if (rsne)
|
||||||
goto ft_error;
|
goto ft_error;
|
||||||
@ -485,7 +485,8 @@ bool ft_over_ds_parse_action_ies(struct ft_ds_info *info,
|
|||||||
const uint8_t *fte = NULL;
|
const uint8_t *fte = NULL;
|
||||||
bool is_rsn = hs->supplicant_ie != NULL;
|
bool is_rsn = hs->supplicant_ie != NULL;
|
||||||
|
|
||||||
if (ft_parse_ies(hs, ies, ies_len, &mde, &fte) < 0)
|
if (ft_parse_ies(hs, info->authenticator_ie, ies, ies_len,
|
||||||
|
&mde, &fte) < 0)
|
||||||
return false;
|
return false;
|
||||||
|
|
||||||
if (!mde_equal(info->mde, mde))
|
if (!mde_equal(info->mde, mde))
|
||||||
@ -516,7 +517,8 @@ static int ft_process_ies(struct handshake_state *hs, const uint8_t *ies,
|
|||||||
if (!ies)
|
if (!ies)
|
||||||
goto ft_error;
|
goto ft_error;
|
||||||
|
|
||||||
if (ft_parse_ies(hs, ies, ies_len, &mde, &fte) < 0)
|
if (ft_parse_ies(hs, hs->authenticator_ie, ies, ies_len,
|
||||||
|
&mde, &fte) < 0)
|
||||||
goto ft_error;
|
goto ft_error;
|
||||||
|
|
||||||
if (!mde_equal(hs->mde, mde))
|
if (!mde_equal(hs->mde, mde))
|
||||||
|
Loading…
Reference in New Issue
Block a user