Fix TKIP countermeasures stopping in deinit paths
The eloop timeout to stop TKIP countermeasures has to be canceled on deinit path to avoid leaving bogus timeouts behind. Signed-hostap: Jouni Malinen <j@w1.fi>
This commit is contained in:
parent
e9c3c1afed
commit
01a1749156
6 changed files with 19 additions and 6 deletions
|
@ -1,6 +1,6 @@
|
||||||
/*
|
/*
|
||||||
* hostapd / TKIP countermeasures
|
* hostapd / TKIP countermeasures
|
||||||
* Copyright (c) 2002-2009, Jouni Malinen <j@w1.fi>
|
* Copyright (c) 2002-2011, Jouni Malinen <j@w1.fi>
|
||||||
*
|
*
|
||||||
* This program is free software; you can redistribute it and/or modify
|
* This program is free software; you can redistribute it and/or modify
|
||||||
* it under the terms of the GNU General Public License version 2 as
|
* it under the terms of the GNU General Public License version 2 as
|
||||||
|
@ -60,6 +60,12 @@ static void ieee80211_tkip_countermeasures_start(struct hostapd_data *hapd)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
void ieee80211_tkip_countermeasures_deinit(struct hostapd_data *hapd)
|
||||||
|
{
|
||||||
|
eloop_cancel_timeout(ieee80211_tkip_countermeasures_stop, hapd, NULL);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
void michael_mic_failure(struct hostapd_data *hapd, const u8 *addr, int local)
|
void michael_mic_failure(struct hostapd_data *hapd, const u8 *addr, int local)
|
||||||
{
|
{
|
||||||
struct os_time now;
|
struct os_time now;
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
/*
|
/*
|
||||||
* hostapd / TKIP countermeasures
|
* hostapd / TKIP countermeasures
|
||||||
* Copyright (c) 2002-2009, Jouni Malinen <j@w1.fi>
|
* Copyright (c) 2002-2011, Jouni Malinen <j@w1.fi>
|
||||||
*
|
*
|
||||||
* This program is free software; you can redistribute it and/or modify
|
* This program is free software; you can redistribute it and/or modify
|
||||||
* it under the terms of the GNU General Public License version 2 as
|
* it under the terms of the GNU General Public License version 2 as
|
||||||
|
@ -16,5 +16,6 @@
|
||||||
#define TKIP_COUNTERMEASURES_H
|
#define TKIP_COUNTERMEASURES_H
|
||||||
|
|
||||||
void michael_mic_failure(struct hostapd_data *hapd, const u8 *addr, int local);
|
void michael_mic_failure(struct hostapd_data *hapd, const u8 *addr, int local);
|
||||||
|
void ieee80211_tkip_countermeasures_deinit(struct hostapd_data *hapd);
|
||||||
|
|
||||||
#endif /* TKIP_COUNTERMEASURES_H */
|
#endif /* TKIP_COUNTERMEASURES_H */
|
||||||
|
|
|
@ -548,6 +548,7 @@ void hostapd_reconfig_wpa(struct hostapd_data *hapd)
|
||||||
|
|
||||||
void hostapd_deinit_wpa(struct hostapd_data *hapd)
|
void hostapd_deinit_wpa(struct hostapd_data *hapd)
|
||||||
{
|
{
|
||||||
|
ieee80211_tkip_countermeasures_deinit(hapd);
|
||||||
rsn_preauth_iface_deinit(hapd);
|
rsn_preauth_iface_deinit(hapd);
|
||||||
if (hapd->wpa_auth) {
|
if (hapd->wpa_auth) {
|
||||||
wpa_deinit(hapd->wpa_auth);
|
wpa_deinit(hapd->wpa_auth);
|
||||||
|
|
|
@ -96,8 +96,7 @@ static int wpa_supplicant_select_config(struct wpa_supplicant *wpa_s)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
static void wpa_supplicant_stop_countermeasures(void *eloop_ctx,
|
void wpa_supplicant_stop_countermeasures(void *eloop_ctx, void *sock_ctx)
|
||||||
void *sock_ctx)
|
|
||||||
{
|
{
|
||||||
struct wpa_supplicant *wpa_s = eloop_ctx;
|
struct wpa_supplicant *wpa_s = eloop_ctx;
|
||||||
|
|
||||||
|
@ -1584,8 +1583,7 @@ static void wpa_supplicant_event_disassoc(struct wpa_supplicant *wpa_s,
|
||||||
|
|
||||||
|
|
||||||
#ifdef CONFIG_DELAYED_MIC_ERROR_REPORT
|
#ifdef CONFIG_DELAYED_MIC_ERROR_REPORT
|
||||||
static void wpa_supplicant_delayed_mic_error_report(void *eloop_ctx,
|
void wpa_supplicant_delayed_mic_error_report(void *eloop_ctx, void *sock_ctx)
|
||||||
void *sock_ctx)
|
|
||||||
{
|
{
|
||||||
struct wpa_supplicant *wpa_s = eloop_ctx;
|
struct wpa_supplicant *wpa_s = eloop_ctx;
|
||||||
|
|
||||||
|
|
|
@ -434,6 +434,11 @@ static void wpa_supplicant_cleanup(struct wpa_supplicant *wpa_s)
|
||||||
|
|
||||||
wpa_supplicant_cancel_scan(wpa_s);
|
wpa_supplicant_cancel_scan(wpa_s);
|
||||||
wpa_supplicant_cancel_auth_timeout(wpa_s);
|
wpa_supplicant_cancel_auth_timeout(wpa_s);
|
||||||
|
eloop_cancel_timeout(wpa_supplicant_stop_countermeasures, wpa_s, NULL);
|
||||||
|
#ifdef CONFIG_DELAYED_MIC_ERROR_REPORT
|
||||||
|
eloop_cancel_timeout(wpa_supplicant_delayed_mic_error_report,
|
||||||
|
wpa_s, NULL);
|
||||||
|
#endif /* CONFIG_DELAYED_MIC_ERROR_REPORT */
|
||||||
|
|
||||||
wpas_wps_deinit(wpa_s);
|
wpas_wps_deinit(wpa_s);
|
||||||
|
|
||||||
|
|
|
@ -585,6 +585,8 @@ void wpa_supplicant_mark_disassoc(struct wpa_supplicant *wpa_s);
|
||||||
int wpa_supplicant_connect(struct wpa_supplicant *wpa_s,
|
int wpa_supplicant_connect(struct wpa_supplicant *wpa_s,
|
||||||
struct wpa_bss *selected,
|
struct wpa_bss *selected,
|
||||||
struct wpa_ssid *ssid);
|
struct wpa_ssid *ssid);
|
||||||
|
void wpa_supplicant_stop_countermeasures(void *eloop_ctx, void *sock_ctx);
|
||||||
|
void wpa_supplicant_delayed_mic_error_report(void *eloop_ctx, void *sock_ctx);
|
||||||
|
|
||||||
/* eap_register.c */
|
/* eap_register.c */
|
||||||
int eap_register_methods(void);
|
int eap_register_methods(void);
|
||||||
|
|
Loading…
Reference in a new issue