aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJouni Malinen <jouni@qca.qualcomm.com>2017-02-10 16:55:26 (GMT)
committerJouni Malinen <j@w1.fi>2017-02-10 17:48:12 (GMT)
commit76aa3183817d41e0650e92689ae38208f71eee44 (patch)
tree6cffbf9c996074d492af63375285c65693a84158
parent02156b98b7aa4fefbf93879897d4f7dfe7cfef25 (diff)
downloadhostap-76aa3183817d41e0650e92689ae38208f71eee44.zip
hostap-76aa3183817d41e0650e92689ae38208f71eee44.tar.gz
hostap-76aa3183817d41e0650e92689ae38208f71eee44.tar.bz2
EAP: Call deinit_for_reauth() for Phase 2 EAP methods
EAP-TTLS/PEAP/FAST were previously doing this for init_for_reauth(), but not for deinit_for_reauth(). Add the deinit_for_reauth() call as well to cover cases like EAP-AKA cleaup of AT_CHECKCODE data. Signed-off-by: Jouni Malinen <jouni@qca.qualcomm.com>
-rw-r--r--src/eap_peer/eap_fast.c4
-rw-r--r--src/eap_peer/eap_peap.c4
-rw-r--r--src/eap_peer/eap_ttls.c4
3 files changed, 12 insertions, 0 deletions
diff --git a/src/eap_peer/eap_fast.c b/src/eap_peer/eap_fast.c
index 6f2b2a2..e4b0c10 100644
--- a/src/eap_peer/eap_fast.c
+++ b/src/eap_peer/eap_fast.c
@@ -1678,6 +1678,10 @@ static Boolean eap_fast_has_reauth_data(struct eap_sm *sm, void *priv)
static void eap_fast_deinit_for_reauth(struct eap_sm *sm, void *priv)
{
struct eap_fast_data *data = priv;
+
+ if (data->phase2_priv && data->phase2_method &&
+ data->phase2_method->deinit_for_reauth)
+ data->phase2_method->deinit_for_reauth(sm, data->phase2_priv);
os_free(data->key_block_p);
data->key_block_p = NULL;
wpabuf_free(data->pending_phase2_req);
diff --git a/src/eap_peer/eap_peap.c b/src/eap_peer/eap_peap.c
index 2d79f1c..2ff6076 100644
--- a/src/eap_peer/eap_peap.c
+++ b/src/eap_peer/eap_peap.c
@@ -1164,6 +1164,10 @@ static Boolean eap_peap_has_reauth_data(struct eap_sm *sm, void *priv)
static void eap_peap_deinit_for_reauth(struct eap_sm *sm, void *priv)
{
struct eap_peap_data *data = priv;
+
+ if (data->phase2_priv && data->phase2_method &&
+ data->phase2_method->deinit_for_reauth)
+ data->phase2_method->deinit_for_reauth(sm, data->phase2_priv);
wpabuf_free(data->pending_phase2_req);
data->pending_phase2_req = NULL;
wpabuf_free(data->pending_resp);
diff --git a/src/eap_peer/eap_ttls.c b/src/eap_peer/eap_ttls.c
index ea4946a..3354b2d 100644
--- a/src/eap_peer/eap_ttls.c
+++ b/src/eap_peer/eap_ttls.c
@@ -1650,6 +1650,10 @@ static Boolean eap_ttls_has_reauth_data(struct eap_sm *sm, void *priv)
static void eap_ttls_deinit_for_reauth(struct eap_sm *sm, void *priv)
{
struct eap_ttls_data *data = priv;
+
+ if (data->phase2_priv && data->phase2_method &&
+ data->phase2_method->deinit_for_reauth)
+ data->phase2_method->deinit_for_reauth(sm, data->phase2_priv);
wpabuf_free(data->pending_phase2_req);
data->pending_phase2_req = NULL;
wpabuf_free(data->pending_resp);