From 72c12c1d300a446e9c7696abdda8378eb66487a7 Mon Sep 17 00:00:00 2001 From: Adriana Reus Date: Sun, 3 Nov 2013 15:21:30 +0200 Subject: [PATCH] EAPOL: Fix static analyzer warnings for pac_opaque_encr_key The allocation was not verified to complete successfully and the allocated memory was not freed on error paths. Signed-hostap: Adriana Reus --- src/eapol_auth/eapol_auth_sm.c | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/src/eapol_auth/eapol_auth_sm.c b/src/eapol_auth/eapol_auth_sm.c index 013d781a9..a2577814e 100644 --- a/src/eapol_auth/eapol_auth_sm.c +++ b/src/eapol_auth/eapol_auth_sm.c @@ -1062,6 +1062,10 @@ static int eapol_auth_conf_clone(struct eapol_auth_config *dst, } if (src->pac_opaque_encr_key) { dst->pac_opaque_encr_key = os_malloc(16); + if (dst->pac_opaque_encr_key == NULL) { + os_free(dst->eap_req_id_text); + return -1; + } os_memcpy(dst->pac_opaque_encr_key, src->pac_opaque_encr_key, 16); } else @@ -1070,6 +1074,7 @@ static int eapol_auth_conf_clone(struct eapol_auth_config *dst, dst->eap_fast_a_id = os_malloc(src->eap_fast_a_id_len); if (dst->eap_fast_a_id == NULL) { os_free(dst->eap_req_id_text); + os_free(dst->pac_opaque_encr_key); return -1; } os_memcpy(dst->eap_fast_a_id, src->eap_fast_a_id, @@ -1081,6 +1086,7 @@ static int eapol_auth_conf_clone(struct eapol_auth_config *dst, dst->eap_fast_a_id_info = os_strdup(src->eap_fast_a_id_info); if (dst->eap_fast_a_id_info == NULL) { os_free(dst->eap_req_id_text); + os_free(dst->pac_opaque_encr_key); os_free(dst->eap_fast_a_id); return -1; }