From 76aa3183817d41e0650e92689ae38208f71eee44 Mon Sep 17 00:00:00 2001 From: Jouni Malinen Date: Fri, 10 Feb 2017 18:55:26 +0200 Subject: [PATCH] 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 --- src/eap_peer/eap_fast.c | 4 ++++ src/eap_peer/eap_peap.c | 4 ++++ src/eap_peer/eap_ttls.c | 4 ++++ 3 files changed, 12 insertions(+) diff --git a/src/eap_peer/eap_fast.c b/src/eap_peer/eap_fast.c index 6f2b2a257..e4b0c1041 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 2d79f1c3b..2ff607625 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 ea4946ab5..3354b2d3a 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);