From fad4444203a5641e125450b72548ff9a18f34d63 Mon Sep 17 00:00:00 2001 From: Kapil Gupta Date: Wed, 22 Aug 2012 09:04:14 -0400 Subject: [PATCH] fixing memory leak issue for audit request --- .../media_gateway_cmd_handler.c | 2 +- .../mod_media_gateway/media_gateway_stack.h | 2 +- .../mod_media_gateway/media_gateway_utils.c | 16 ++++++++++------ 3 files changed, 12 insertions(+), 8 deletions(-) diff --git a/src/mod/endpoints/mod_media_gateway/media_gateway_cmd_handler.c b/src/mod/endpoints/mod_media_gateway/media_gateway_cmd_handler.c index c29a38f474..2c30bc6bd0 100644 --- a/src/mod/endpoints/mod_media_gateway/media_gateway_cmd_handler.c +++ b/src/mod/endpoints/mod_media_gateway/media_gateway_cmd_handler.c @@ -1857,7 +1857,7 @@ switch_status_t handle_mg_audit_cmd( megaco_profile_t* mg_profile, MgMgcoCommand adtRep->u.other.audit.parms[numOfParms - 1]->type.pres = PRSNT_NODEF; adtRep->u.other.audit.parms[numOfParms - 1]->type.val = MGT_MEDIADESC; - media = get_default_media_desc(mg_profile, termId); + media = get_default_media_desc(mg_profile, termId, &reply.u.mgCmdRsp[0]->memCp); if(!media){ return SWITCH_STATUS_FALSE; } diff --git a/src/mod/endpoints/mod_media_gateway/media_gateway_stack.h b/src/mod/endpoints/mod_media_gateway/media_gateway_stack.h index 785cfdff63..3943101285 100644 --- a/src/mod/endpoints/mod_media_gateway/media_gateway_stack.h +++ b/src/mod/endpoints/mod_media_gateway/media_gateway_stack.h @@ -186,7 +186,7 @@ switch_status_t handle_mg_subtract_cmd(megaco_profile_t* mg_profile, MgMgcoComma switch_status_t handle_mg_modify_cmd(megaco_profile_t* mg_profile, MgMgcoCommand *cmd); switch_status_t mg_stack_free_mem(void* msg); switch_status_t mg_stack_alloc_mem( Ptr* _memPtr, Size _memSize ); -MgMgcoMediaDesc* get_default_media_desc(megaco_profile_t* mg_profile, MgMgcoTermId* termId); +MgMgcoMediaDesc* get_default_media_desc(megaco_profile_t* mg_profile, MgMgcoTermId* termId, CmMemListCp *memCp); switch_status_t handle_media_audit( SuId suId, MgMgcoCommand *auditReq); switch_status_t mg_send_add_rsp(SuId suId, MgMgcoCommand *req); S16 mg_fill_mgco_termid ( MgMgcoTermId *termId, char* term_str, int term_len, CmMemListCp *memCp); diff --git a/src/mod/endpoints/mod_media_gateway/media_gateway_utils.c b/src/mod/endpoints/mod_media_gateway/media_gateway_utils.c index 766b948f48..dc6312ca91 100644 --- a/src/mod/endpoints/mod_media_gateway/media_gateway_utils.c +++ b/src/mod/endpoints/mod_media_gateway/media_gateway_utils.c @@ -1478,13 +1478,14 @@ void mg_util_set_term_string ( MgStr *errTxt, MgMgcoTermId *termId) "info, error-text is: %s\n", __PRETTY_FUNCTION__,errTxt->val); } /*****************************************************************************************************************************/ -MgMgcoMediaDesc* get_default_media_desc(megaco_profile_t* mg_profile, MgMgcoTermId* termId) +MgMgcoMediaDesc* get_default_media_desc(megaco_profile_t* mg_profile, MgMgcoTermId* termId, CmMemListCp *memCp) { MgMgcoMediaDesc *media = NULL; MgMgcoMediaPar *mediaPar = NULL; MgMgcoTermStateParm *trmStPar = NULL; + S16 ret = ROK; - mg_stack_alloc_mem((Ptr)&media, sizeof(MgMgcoMediaDesc)); + MG_GETMEM(media, sizeof(MgMgcoMediaDesc) , memCp, ret); if (!media) { switch_log_printf(SWITCH_CHANNEL_LOG_CLEAN, SWITCH_LOG_ERROR, "failed, memory alloc\n"); @@ -1492,14 +1493,15 @@ MgMgcoMediaDesc* get_default_media_desc(megaco_profile_t* mg_profile, MgMgcoTerm } media->num.pres = PRSNT_NODEF; media->num.val = 1; - mg_stack_alloc_mem((Ptr)&mediaPar, sizeof(MgMgcoMediaPar)); + + MG_GETMEM(mediaPar, sizeof(MgMgcoMediaPar) , memCp, ret); if (!mediaPar) { switch_log_printf(SWITCH_CHANNEL_LOG_CLEAN, SWITCH_LOG_ERROR, "failed, memory alloc\n"); mg_stack_free_mem(media); return NULL; } - mg_stack_alloc_mem((Ptr)&media->parms, sizeof(MgMgcoMediaPar *)); + MG_GETMEM(media->parms, sizeof(MgMgcoMediaPar*) , memCp, ret); if (!media->parms) { switch_log_printf(SWITCH_CHANNEL_LOG_CLEAN, SWITCH_LOG_ERROR, "failed, memory alloc\n"); @@ -1511,7 +1513,8 @@ MgMgcoMediaDesc* get_default_media_desc(megaco_profile_t* mg_profile, MgMgcoTerm mediaPar->type.val = MGT_MEDIAPAR_TERMST; mediaPar->u.tstate.numComp.pres = PRSNT_NODEF; mediaPar->u.tstate.numComp.val = 1; - mg_stack_alloc_mem((Ptr)&trmStPar, sizeof(MgMgcoTermStateParm)); + + MG_GETMEM(trmStPar, sizeof(MgMgcoTermStateParm) , memCp, ret); if (!trmStPar) { switch_log_printf(SWITCH_CHANNEL_LOG_CLEAN, SWITCH_LOG_ERROR, "failed, memory alloc\n"); @@ -1520,7 +1523,8 @@ MgMgcoMediaDesc* get_default_media_desc(megaco_profile_t* mg_profile, MgMgcoTerm mg_stack_free_mem((void*)media); return NULL; } - mg_stack_alloc_mem((Ptr)&mediaPar->u.tstate.trmStPar, sizeof(MgMgcoTermStateParm *)); + MG_GETMEM(mediaPar->u.tstate.trmStPar, sizeof(MgMgcoTermStateParm *) , memCp, ret); + if (!mediaPar->u.tstate.trmStPar) { switch_log_printf(SWITCH_CHANNEL_LOG_CLEAN, SWITCH_LOG_ERROR, "failed, memory alloc\n"); mg_stack_free_mem((void*)trmStPar);