]> git.ipfire.org Git - thirdparty/hostap.git/commitdiff
WPS: Disconnect when removing existing WPS network block
authorJunli Zhao <junliz@qca.qualcomm.com>
Mon, 8 Jul 2013 09:09:18 +0000 (12:09 +0300)
committerJouni Malinen <j@w1.fi>
Mon, 8 Jul 2013 09:09:18 +0000 (12:09 +0300)
wpas_clear_wps() was just clearing the current wpa_s->current_ssid
pointer when removing a WPS network block which with the device was
associated. This could leave the association up even though the network
block had already been removed. Prevent this by explicitly disconnecting
from the network instead of such clearing current_ssid.

Signed-hostap: Jouni Malinen <jouni@qca.qualcomm.com>

wpa_supplicant/wps_supplicant.c

index d73e023e6df93844672c99ff057f77c1655507cf..8e0207cb8067caf3c72832d7e96fa0c4d7aa0c89 100644 (file)
@@ -868,9 +868,8 @@ static void wpas_clear_wps(struct wpa_supplicant *wpa_s)
        while (ssid) {
                if (ssid->key_mgmt & WPA_KEY_MGMT_WPS) {
                        if (ssid == wpa_s->current_ssid) {
-                               wpa_s->current_ssid = NULL;
-                               if (ssid != NULL)
-                                       wpas_notify_network_changed(wpa_s);
+                               wpa_supplicant_deauthenticate(
+                                       wpa_s, WLAN_REASON_DEAUTH_LEAVING);
                        }
                        id = ssid->id;
                        remove_ssid = ssid;