From: William King Date: Sun, 19 May 2013 00:00:41 +0000 (-0700) Subject: Possible leak if someone were to try and add extra headers to a channel that had... X-Git-Tag: v1.2.10~8 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=97286e10cd4f8b8f9f14ee02f6ba051ebc04a2ea;p=thirdparty%2Ffreeswitch.git Possible leak if someone were to try and add extra headers to a channel that had either an inbound info on that session or the session were to be deflected. I don't see a way that these extra headers could be added outside of a C module subscribing to the session states, but just to make sure I'm adding these so that just like other extra header locations it's cleaned up. --- diff --git a/src/mod/endpoints/mod_sofia/mod_sofia.c b/src/mod/endpoints/mod_sofia/mod_sofia.c index a53f1d5d10..4a0d72fcff 100644 --- a/src/mod/endpoints/mod_sofia/mod_sofia.c +++ b/src/mod/endpoints/mod_sofia/mod_sofia.c @@ -2276,6 +2276,8 @@ static switch_status_t sofia_receive_message(switch_core_session_t *session, swi TAG_IF(!zstr(tech_pvt->user_via), SIPTAG_VIA_STR(tech_pvt->user_via)), TAG_IF(pl, SIPTAG_PAYLOAD_STR(pl)), TAG_END()); + + switch_safe_free(headers); } else { switch_log_printf(SWITCH_CHANNEL_SESSION_LOG(session), SWITCH_LOG_DEBUG, "%s send_info is not supported.\n", switch_channel_get_name(channel)); } @@ -2605,6 +2607,7 @@ static switch_status_t sofia_receive_message(switch_core_session_t *session, swi msg->string_reply = "no reply"; } switch_channel_hangup(tech_pvt->channel, SWITCH_CAUSE_BLIND_TRANSFER); + switch_safe_free(extra_headers); } break;