wpa_supplicant used to maintain the list of rejected groups for SAE over
multiple failed attempts. This could have some DoS issues, so clear this
list if SAE authentication attempts fails continuously.
Signed-off-by: Jouni Malinen <j@w1.fi>
NULL);
wpa_supplicant_set_state(wpa_s, WPA_DISCONNECTED);
+ if (wpa_s->sme.sae_rejected_groups &&
+ ssid->disabled_until.sec) {
+ wpa_printf(MSG_DEBUG,
+ "SME: Clear SAE state with rejected groups due to continuous failures");
+ wpa_s_clear_sae_rejected(wpa_s);
+ }
}
if (res != 1)
return;
}
-static void wpa_s_clear_sae_rejected(struct wpa_supplicant *wpa_s)
+void wpa_s_clear_sae_rejected(struct wpa_supplicant *wpa_s)
{
#if defined(CONFIG_SAE) && defined(CONFIG_SME)
os_free(wpa_s->sme.sae_rejected_groups);
int pmf_in_use(struct wpa_supplicant *wpa_s, const u8 *addr);
void wpa_s_setup_sae_pt(struct wpa_config *conf, struct wpa_ssid *ssid,
bool force);
+void wpa_s_clear_sae_rejected(struct wpa_supplicant *wpa_s);
bool wpas_is_sae_avoided(struct wpa_supplicant *wpa_s,
struct wpa_ssid *ssid,