From: Jouni Malinen Date: Wed, 25 Jan 2012 20:32:58 +0000 (+0200) Subject: Fix ap_sta_disconnect() to clear EAPOL/WPA authenticator state X-Git-Tag: aosp-jb-start~63 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=ceb997f394773075c292e81c69cdd24717e7d1d5;p=thirdparty%2Fhostap.git Fix ap_sta_disconnect() to clear EAPOL/WPA authenticator state Number of places in hostapd use ap_sta_disconnect() instead of ap_sta_disassociate() or ap_sta_deauthenticate(). There are some differences between these functions, e.g., in the area how quickly the EAPOL state machines get deinitialized. This can result in somewhat unexpected events since the EAPOL/WPA authenticator state machines could remain running after deauthentication. Address this by forcing EAPOL/WPA authenticator state machines to disabled state whenever ap_sta_disconnect() is called instead of waiting for the deauthentication callback or other timeout to clear the STA. Signed-hostap: Jouni Malinen --- diff --git a/src/ap/sta_info.c b/src/ap/sta_info.c index 0366e40fb..38f18e739 100644 --- a/src/ap/sta_info.c +++ b/src/ap/sta_info.c @@ -851,6 +851,8 @@ void ap_sta_disconnect(struct hostapd_data *hapd, struct sta_info *sta, if (sta == NULL) return; ap_sta_set_authorized(hapd, sta, 0); + wpa_auth_sm_event(sta->wpa_sm, WPA_DEAUTH); + ieee802_1x_notify_port_enabled(sta->eapol_sm, 0); sta->flags &= ~(WLAN_STA_AUTH | WLAN_STA_ASSOC); eloop_cancel_timeout(ap_handle_timer, hapd, sta); eloop_register_timeout(AP_MAX_INACTIVITY_AFTER_DEAUTH, 0,