[sr-dev] mem leak in sdpops
Vicente Hernando
vhernando at systemonenoc.com
Fri Aug 31 14:07:50 CEST 2012
Sorry, previous attachment did not work.
On 08/31/2012 02:06 PM, Vicente Hernando wrote:
> Hello,
>
> within w_get_sdp function in modules/sdpops/sdpops_mod.c
>
> } else {
> avp_val.s.s = pkg_malloc(sdp->raw_sdp.len);
> avp_val.s.len = sdp->raw_sdp.len;
> if (avp_val.s.s == NULL)
>
> I do not find anywhere where avp_val.s.s variable is freed.
>
>
> So I attach two possible patches to solve that in two different ways.
>
> Kind regards,
> Vicente.
>
> _______________________________________________
> sr-dev mailing list
> sr-dev at lists.sip-router.org
> http://lists.sip-router.org/cgi-bin/mailman/listinfo/sr-dev
>
-------------- next part --------------
diff --git modules/sdpops/sdpops_mod.c modules/sdpops/sdpops_mod.c
index df7d6e6..9f662dc 100644
--- modules/sdpops/sdpops_mod.c
+++ modules/sdpops/sdpops_mod.c
@@ -987,8 +987,10 @@ static int w_get_sdp(sip_msg_t* msg, char *avp)
if (add_avp(AVP_VAL_STR | avp_type, avp_name, avp_val) != 0)
{
LM_ERR("Failed to add SDP avp");
+ pkg_free(avp_val.s.s);
return -1;
}
+ pkg_free(avp_val.s.s);
return 1;
}
-------------- next part --------------
diff --git modules/sdpops/sdpops_mod.c modules/sdpops/sdpops_mod.c
index df7d6e6..b70b553 100644
--- modules/sdpops/sdpops_mod.c
+++ modules/sdpops/sdpops_mod.c
@@ -974,14 +974,8 @@ static int w_get_sdp(sip_msg_t* msg, char *avp)
LM_DBG("No SDP\n");
return -2;
} else {
- avp_val.s.s = pkg_malloc(sdp->raw_sdp.len);
+ avp_val.s.s = sdp->raw_sdp.s;
avp_val.s.len = sdp->raw_sdp.len;
- if (avp_val.s.s == NULL)
- {
- LM_ERR("Failed to alloc memory for SDP");
- return -1;
- }
- memcpy(avp_val.s.s, sdp->raw_sdp.s, avp_val.s.len);
LM_DBG("Found SDP %.*s\n", sdp->raw_sdp.len, sdp->raw_sdp.s);
}
if (add_avp(AVP_VAL_STR | avp_type, avp_name, avp_val) != 0)
More information about the sr-dev
mailing list