mirror of
https://github.com/vanhoefm/fragattacks.git
synced 2024-11-28 18:28:23 -05:00
ACS: Fix memory leak if interface is disabled during scan
The survey data was not freed if hostapd interface got disabled during an ACS scan. Signed-off-by: Jouni Malinen <j@w1.fi>
This commit is contained in:
parent
31b398e05f
commit
4c803dfcd7
@ -260,7 +260,7 @@ static void acs_clean_chan_surveys(struct hostapd_channel_data *chan)
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
static void acs_cleanup(struct hostapd_iface *iface)
|
void acs_cleanup(struct hostapd_iface *iface)
|
||||||
{
|
{
|
||||||
int i;
|
int i;
|
||||||
struct hostapd_channel_data *chan;
|
struct hostapd_channel_data *chan;
|
||||||
|
@ -13,6 +13,7 @@
|
|||||||
#ifdef CONFIG_ACS
|
#ifdef CONFIG_ACS
|
||||||
|
|
||||||
enum hostapd_chan_status acs_init(struct hostapd_iface *iface);
|
enum hostapd_chan_status acs_init(struct hostapd_iface *iface);
|
||||||
|
void acs_cleanup(struct hostapd_iface *iface);
|
||||||
|
|
||||||
#else /* CONFIG_ACS */
|
#else /* CONFIG_ACS */
|
||||||
|
|
||||||
@ -22,6 +23,10 @@ static inline enum hostapd_chan_status acs_init(struct hostapd_iface *iface)
|
|||||||
return HOSTAPD_CHAN_INVALID;
|
return HOSTAPD_CHAN_INVALID;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static inline void acs_cleanup(struct hostapd_iface *iface)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
#endif /* CONFIG_ACS */
|
#endif /* CONFIG_ACS */
|
||||||
|
|
||||||
#endif /* ACS_H */
|
#endif /* ACS_H */
|
||||||
|
@ -46,6 +46,7 @@
|
|||||||
#include "neighbor_db.h"
|
#include "neighbor_db.h"
|
||||||
#include "rrm.h"
|
#include "rrm.h"
|
||||||
#include "fils_hlp.h"
|
#include "fils_hlp.h"
|
||||||
|
#include "acs.h"
|
||||||
|
|
||||||
|
|
||||||
static int hostapd_flush_old_stations(struct hostapd_data *hapd, u16 reason);
|
static int hostapd_flush_old_stations(struct hostapd_data *hapd, u16 reason);
|
||||||
@ -394,8 +395,11 @@ static void hostapd_cleanup_iface_partial(struct hostapd_iface *iface)
|
|||||||
hostapd_stop_setup_timers(iface);
|
hostapd_stop_setup_timers(iface);
|
||||||
#endif /* NEED_AP_MLME */
|
#endif /* NEED_AP_MLME */
|
||||||
#endif /* CONFIG_IEEE80211N */
|
#endif /* CONFIG_IEEE80211N */
|
||||||
|
if (iface->current_mode)
|
||||||
|
acs_cleanup(iface);
|
||||||
hostapd_free_hw_features(iface->hw_features, iface->num_hw_features);
|
hostapd_free_hw_features(iface->hw_features, iface->num_hw_features);
|
||||||
iface->hw_features = NULL;
|
iface->hw_features = NULL;
|
||||||
|
iface->current_mode = NULL;
|
||||||
os_free(iface->current_rates);
|
os_free(iface->current_rates);
|
||||||
iface->current_rates = NULL;
|
iface->current_rates = NULL;
|
||||||
os_free(iface->basic_rates);
|
os_free(iface->basic_rates);
|
||||||
|
Loading…
Reference in New Issue
Block a user