mirror of
https://github.com/asterisk/asterisk.git
synced 2025-09-04 20:04:50 +00:00
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
This commit is contained in:
committed by
Joshua Colp
parent
b11b49945b
commit
23e427bbd2
@@ -803,7 +803,7 @@ static int handle_incoming_sdp(struct ast_sip_session *session, const pjmedia_sd
|
|||||||
}
|
}
|
||||||
if (!stream) {
|
if (!stream) {
|
||||||
struct ast_stream *existing_stream = NULL;
|
struct ast_stream *existing_stream = NULL;
|
||||||
char *stream_name = NULL;
|
char *stream_name = NULL, *stream_name_allocated = NULL;
|
||||||
const char *stream_label = NULL;
|
const char *stream_label = NULL;
|
||||||
|
|
||||||
if (session->active_media_state->topology &&
|
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_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;
|
handled = 0;
|
||||||
SCOPE_EXIT_LOG_EXPR(goto end, LOG_ERROR, "%s: Couldn't alloc stream name\n",
|
SCOPE_EXIT_LOG_EXPR(goto end, LOG_ERROR, "%s: Couldn't alloc stream name\n",
|
||||||
ast_sip_session_get_name(session));
|
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),
|
ast_trace(-1, "%s: Using %s for new stream name\n", ast_sip_session_get_name(session),
|
||||||
stream_name);
|
stream_name);
|
||||||
}
|
}
|
||||||
|
|
||||||
stream = ast_stream_alloc(stream_name, type);
|
stream = ast_stream_alloc(stream_name, type);
|
||||||
|
ast_free(stream_name_allocated);
|
||||||
if (!stream) {
|
if (!stream) {
|
||||||
handled = 0;
|
handled = 0;
|
||||||
SCOPE_EXIT_LOG_EXPR(goto end, LOG_ERROR, "%s: Couldn't alloc stream\n",
|
SCOPE_EXIT_LOG_EXPR(goto end, LOG_ERROR, "%s: Couldn't alloc stream\n",
|
||||||
|
Reference in New Issue
Block a user