From: Joshua C. Colp Date: Tue, 22 Sep 2020 10:05:34 +0000 (-0300) Subject: res_pjsip_session: Fix stream name memory leak. X-Git-Tag: 18.1.0-rc1~36 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=9eeb40af33437f50240b9eb61d9ab8756fa7a0aa;p=thirdparty%2Fasterisk.git res_pjsip_session: Fix stream name memory leak. When constructing a stream name based on the media type and position the allocated name was not being freed causing a leak. Change-Id: I52510863b24a2f531f0a55b440bb2c81844029de --- diff --git a/res/res_pjsip_session.c b/res/res_pjsip_session.c index cd31acaddc..42edaf6ab9 100644 --- a/res/res_pjsip_session.c +++ b/res/res_pjsip_session.c @@ -803,7 +803,7 @@ static int handle_incoming_sdp(struct ast_sip_session *session, const pjmedia_sd } if (!stream) { struct ast_stream *existing_stream = NULL; - char *stream_name = NULL; + char *stream_name = NULL, *stream_name_allocated = NULL; const char *stream_label = NULL; if (session->active_media_state->topology && @@ -819,17 +819,19 @@ static int handle_incoming_sdp(struct ast_sip_session *session, const pjmedia_sd } if (ast_strlen_zero(stream_name)) { - if (ast_asprintf(&stream_name, "%s-%d", ast_codec_media_type2str(type), i) < 0) { + if (ast_asprintf(&stream_name_allocated, "%s-%d", ast_codec_media_type2str(type), i) < 0) { handled = 0; SCOPE_EXIT_LOG_EXPR(goto end, LOG_ERROR, "%s: Couldn't alloc stream name\n", ast_sip_session_get_name(session)); } + stream_name = stream_name_allocated; ast_trace(-1, "%s: Using %s for new stream name\n", ast_sip_session_get_name(session), stream_name); } stream = ast_stream_alloc(stream_name, type); + ast_free(stream_name_allocated); if (!stream) { handled = 0; SCOPE_EXIT_LOG_EXPR(goto end, LOG_ERROR, "%s: Couldn't alloc stream\n",