]> git.ipfire.org Git - thirdparty/freeswitch.git/commitdiff
fixing memory leak issue for audit request
authorKapil Gupta <kgupta@sangoma.com>
Wed, 22 Aug 2012 13:04:14 +0000 (09:04 -0400)
committerKapil Gupta <kgupta@sangoma.com>
Wed, 22 Aug 2012 13:04:14 +0000 (09:04 -0400)
src/mod/endpoints/mod_media_gateway/media_gateway_cmd_handler.c
src/mod/endpoints/mod_media_gateway/media_gateway_stack.h
src/mod/endpoints/mod_media_gateway/media_gateway_utils.c

index c29a38f474ef920f4a5f506c9de81053a2c3ba9f..2c30bc6bd06783a9ac81c267313060fca10791a4 100644 (file)
@@ -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;
                                                }
index 785cfdff6382734a33d5647f03f70df37767854c..39431012858e5befb8835acc60338f11c28defc0 100644 (file)
@@ -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);
index 766b948f4890cc2ea22e96e99f9f1ffd2e4e11cd..dc6312ca91941ca355ab475db62a3667d1b7c02e 100644 (file)
@@ -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);