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
3 changed files with 10 additions and 1 deletions
|
@ -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;
|
||||
struct hostapd_channel_data *chan;
|
||||
|
|
|
@ -13,6 +13,7 @@
|
|||
#ifdef CONFIG_ACS
|
||||
|
||||
enum hostapd_chan_status acs_init(struct hostapd_iface *iface);
|
||||
void acs_cleanup(struct hostapd_iface *iface);
|
||||
|
||||
#else /* CONFIG_ACS */
|
||||
|
||||
|
@ -22,6 +23,10 @@ static inline enum hostapd_chan_status acs_init(struct hostapd_iface *iface)
|
|||
return HOSTAPD_CHAN_INVALID;
|
||||
}
|
||||
|
||||
static inline void acs_cleanup(struct hostapd_iface *iface)
|
||||
{
|
||||
}
|
||||
|
||||
#endif /* CONFIG_ACS */
|
||||
|
||||
#endif /* ACS_H */
|
||||
|
|
|
@ -46,6 +46,7 @@
|
|||
#include "neighbor_db.h"
|
||||
#include "rrm.h"
|
||||
#include "fils_hlp.h"
|
||||
#include "acs.h"
|
||||
|
||||
|
||||
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);
|
||||
#endif /* NEED_AP_MLME */
|
||||
#endif /* CONFIG_IEEE80211N */
|
||||
if (iface->current_mode)
|
||||
acs_cleanup(iface);
|
||||
hostapd_free_hw_features(iface->hw_features, iface->num_hw_features);
|
||||
iface->hw_features = NULL;
|
||||
iface->current_mode = NULL;
|
||||
os_free(iface->current_rates);
|
||||
iface->current_rates = NULL;
|
||||
os_free(iface->basic_rates);
|
||||
|
|
Loading…
Reference in a new issue