diff --git a/src/ap/hostapd.c b/src/ap/hostapd.c index 768ba3afa..71721dd60 100644 --- a/src/ap/hostapd.c +++ b/src/ap/hostapd.c @@ -1230,8 +1230,17 @@ int hostapd_setup_interface_complete(struct hostapd_iface *iface, int err) hapd = iface->bss[j]; if (j) os_memcpy(hapd->own_addr, prev_addr, ETH_ALEN); - if (hostapd_setup_bss(hapd, j == 0)) + if (hostapd_setup_bss(hapd, j == 0)) { + do { + hapd = iface->bss[j]; + hostapd_free_stas(hapd); + hostapd_flush_old_stations( + hapd, WLAN_REASON_DEAUTH_LEAVING); + hostapd_clear_wep(hapd); + hostapd_free_hapd_data(hapd); + } while (j-- > 0); goto fail; + } if (hostapd_mac_comp_empty(hapd->conf->bssid) == 0) prev_addr = hapd->own_addr; }