Process Transition Disable KDE in station mode
Check whether the Transition Disable KDE is received from an authenticated AP and if so, whether it contains valid indication for disabling a transition mode. If that is the case, update the local network profile by removing the less secure options. Signed-off-by: Jouni Malinen <jouni@codeaurora.org>
This commit is contained in:
parent
82cc0b0cc2
commit
9d1857cf35
7 changed files with 95 additions and 0 deletions
|
@ -1771,6 +1771,8 @@ static void wpa_supplicant_process_3_of_4(struct wpa_sm *sm,
|
|||
sm->cur_pmksa = sa;
|
||||
}
|
||||
|
||||
if (ie.transition_disable)
|
||||
wpa_sm_transition_disable(sm, ie.transition_disable[0]);
|
||||
sm->msg_3_of_4_ok = 1;
|
||||
return;
|
||||
|
||||
|
@ -4809,6 +4811,9 @@ int fils_process_assoc_resp(struct wpa_sm *sm, const u8 *resp, size_t len)
|
|||
sm->fils_completed = 1;
|
||||
forced_memzero(&gd, sizeof(gd));
|
||||
|
||||
if (kde.transition_disable)
|
||||
wpa_sm_transition_disable(sm, kde.transition_disable[0]);
|
||||
|
||||
return 0;
|
||||
fail:
|
||||
forced_memzero(&gd, sizeof(gd));
|
||||
|
|
|
@ -85,6 +85,7 @@ struct wpa_sm_ctx {
|
|||
void (*fils_hlp_rx)(void *ctx, const u8 *dst, const u8 *src,
|
||||
const u8 *pkt, size_t pkt_len);
|
||||
int (*channel_info)(void *ctx, struct wpa_channel_info *ci);
|
||||
void (*transition_disable)(void *ctx, u8 bitmap);
|
||||
};
|
||||
|
||||
|
||||
|
|
|
@ -426,6 +426,12 @@ static inline int wpa_sm_channel_info(struct wpa_sm *sm,
|
|||
return sm->ctx->channel_info(sm->ctx->ctx, ci);
|
||||
}
|
||||
|
||||
static inline void wpa_sm_transition_disable(struct wpa_sm *sm, u8 bitmap)
|
||||
{
|
||||
if (sm->ctx->transition_disable)
|
||||
sm->ctx->transition_disable(sm->ctx->ctx, bitmap);
|
||||
}
|
||||
|
||||
|
||||
int wpa_eapol_key_send(struct wpa_sm *sm, struct wpa_ptk *ptk,
|
||||
int ver, const u8 *dest, u16 proto,
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue