From: Jouni Malinen Date: Wed, 15 Sep 2010 08:16:17 +0000 (-1000) Subject: EAP-pwd: Fix couple of memory leaks X-Git-Url: http://www.project-moonshot.org/gitweb/?p=libeap.git;a=commitdiff_plain;h=3d32c6517dae078b4b9216e635d1d629fc715a77 EAP-pwd: Fix couple of memory leaks --- diff --git a/src/eap_common/eap_pwd_common.c b/src/eap_common/eap_pwd_common.c index d01ba0a..3dbe9e4 100644 --- a/src/eap_common/eap_pwd_common.c +++ b/src/eap_common/eap_pwd_common.c @@ -245,10 +245,11 @@ int compute_password_element(EAP_PWD_group *grp, u16 num, grp->group_num = num; if (0) { fail: + EC_GROUP_free(grp->group); EC_POINT_free(grp->pwe); BN_free(grp->order); BN_free(grp->prime); - free(grp); + os_free(grp); grp = NULL; ret = 1; } diff --git a/src/eap_peer/eap_pwd.c b/src/eap_peer/eap_pwd.c index 42a849f..3baca15 100644 --- a/src/eap_peer/eap_pwd.c +++ b/src/eap_peer/eap_pwd.c @@ -142,8 +142,15 @@ static void eap_pwd_deinit(struct eap_sm *sm, void *priv) EC_POINT_free(data->my_element); EC_POINT_free(data->server_element); os_free(data->id_peer); + os_free(data->id_server); os_free(data->password); - os_free(data->grp); + if (data->grp) { + EC_GROUP_free(data->grp->group); + EC_POINT_free(data->grp->pwe); + BN_free(data->grp->order); + BN_free(data->grp->prime); + os_free(data->grp); + } os_free(data); } diff --git a/src/eap_server/eap_server_pwd.c b/src/eap_server/eap_server_pwd.c index 65b94c7..512817b 100644 --- a/src/eap_server/eap_server_pwd.c +++ b/src/eap_server/eap_server_pwd.c @@ -100,7 +100,7 @@ static void * eap_pwd_init(struct eap_sm *sm) data->password = os_malloc(sm->user->password_len); if (data->password == NULL) { - wpa_printf(MSG_INFO, "EAP-PWD: Mmemory allocation password " + wpa_printf(MSG_INFO, "EAP-PWD: Memory allocation password " "fail"); os_free(data->id_server); os_free(data); @@ -135,7 +135,14 @@ static void eap_pwd_reset(struct eap_sm *sm, void *priv) EC_POINT_free(data->peer_element); os_free(data->id_peer); os_free(data->id_server); - os_free(data->grp); + os_free(data->password); + if (data->grp) { + EC_GROUP_free(data->grp->group); + EC_POINT_free(data->grp->pwe); + BN_free(data->grp->order); + BN_free(data->grp->prime); + os_free(data->grp); + } os_free(data); }