aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJouni Malinen <j@w1.fi>2004-12-25 18:45:04 (GMT)
committerJouni Malinen <j@w1.fi>2004-12-25 18:45:04 (GMT)
commit4411bbb3fea17961e4ac937b90851c892b016ded (patch)
treebc16d579df5fd9b13140b04e83c7a3a7cf1107a3
parent02222e6dc4c555e4335c69db5c125d04aca39edd (diff)
downloadhostap-history-4411bbb3fea17961e4ac937b90851c892b016ded.zip
hostap-history-4411bbb3fea17961e4ac937b90851c892b016ded.tar.gz
hostap-history-4411bbb3fea17961e4ac937b90851c892b016ded.tar.bz2
Merged from CVS trunk into hostap_0_2_branch:
| wpa_supplicant/wpa_supplicant.c:1.179, wpa_supplicant/ChangeLog:1.95 Modified association event handler to set portEnabled = FALSE before clearing port Valid in order to reset EAP state machine and avoid problems with new authentication getting ignored because of state machines ending up in AUTHENTICATED/SUCCESS state based on old information.
-rw-r--r--wpa_supplicant/ChangeLog5
-rw-r--r--wpa_supplicant/wpa_supplicant.c10
2 files changed, 15 insertions, 0 deletions
diff --git a/wpa_supplicant/ChangeLog b/wpa_supplicant/ChangeLog
index b13968e..9f0a505 100644
--- a/wpa_supplicant/ChangeLog
+++ b/wpa_supplicant/ChangeLog
@@ -18,6 +18,11 @@ ChangeLog for wpa_supplicant
configuration
* fixed WPA msg 3/4 processing to allow Key Data field contain other
IEs than just one WPA IE
+ * modified association event handler to set portEnabled = FALSE before
+ clearing port Valid in order to reset EAP state machine and avoid
+ problems with new authentication getting ignored because of state
+ machines ending up in AUTHENTICATED/SUCCESS state based on old
+ information
2004-10-03 - v0.2.5
* wpa_cli: fixed parsing of -p <path> command line argument
diff --git a/wpa_supplicant/wpa_supplicant.c b/wpa_supplicant/wpa_supplicant.c
index af29c24..29ffe41 100644
--- a/wpa_supplicant/wpa_supplicant.c
+++ b/wpa_supplicant/wpa_supplicant.c
@@ -597,6 +597,16 @@ void wpa_supplicant_event(struct wpa_supplicant *wpa_s, wpa_event_type event,
wpa_clear_keys(wpa_s, bssid);
wpa_supplicant_select_config(wpa_s);
}
+ wpa_msg(wpa_s, MSG_INFO, "Associated with " MACSTR,
+ MAC2STR(bssid));
+ /* Set portEnabled first to FALSE in order to get EAP state
+ * machine out of the SUCCESS state and eapSuccess cleared.
+ * Without this, EAPOL PAE state machine may transit to
+ * AUTHENTICATING state based on obsolete eapSuccess and then
+ * trigger BE_AUTH to SUCCESS and PAE to AUTHENTICATED without
+ * ever giving chance to EAP state machine to reset the state.
+ */
+ eapol_sm_notify_portEnabled(wpa_s->eapol, FALSE);
eapol_sm_notify_portValid(wpa_s->eapol, FALSE);
if (wpa_s->key_mgmt == WPA_KEY_MGMT_PSK)
eapol_sm_notify_eap_success(wpa_s->eapol, FALSE);