Fix leak : Releae the memory of UeCapaiblity if exists before allocating

the new one
This commit is contained in:
James Park 2017-08-08 14:45:52 -07:00
parent 7243966cc4
commit 5db7686c3d
2 changed files with 15 additions and 4 deletions

View File

@ -1209,7 +1209,8 @@ status_t mme_ue_remove(mme_ue_t *mme_ue)
S1ap_UERadioCapability_t *radio_capa =
(S1ap_UERadioCapability_t *)mme_ue->radio_capa;
core_free(radio_capa->buf);
if (radio_capa->buf)
core_free(radio_capa->buf);
core_free(mme_ue->radio_capa);
}

View File

@ -338,12 +338,22 @@ void s1ap_handle_ue_capability_info_indication(
S1ap_UERadioCapability_t *radio_capa = NULL;
mme_ue_t *mme_ue = enb_ue->mme_ue;
/* Save UE radio capability */
ue_radio_capa = &ies->ueRadioCapability;
mme_ue->radio_capa = core_calloc(1, sizeof(S1ap_UERadioCapability_t));
d_assert(mme_ue->radio_capa,return,"core_calloc Error");
/* Release the previous one */
if (mme_ue->radio_capa)
{
radio_capa = (S1ap_UERadioCapability_t *)mme_ue->radio_capa;
if (radio_capa->buf)
core_free(radio_capa->buf);
core_free(mme_ue->radio_capa);
}
/* Save UE radio capability */
mme_ue->radio_capa = core_calloc(1, sizeof(S1ap_UERadioCapability_t));
radio_capa = (S1ap_UERadioCapability_t *)mme_ue->radio_capa;
d_assert(radio_capa,return,"core_calloc Error");
radio_capa->size = ue_radio_capa->size;
radio_capa->buf =
core_calloc(radio_capa->size, sizeof(c_uint8_t));