From: lvl Date: Tue, 1 Oct 2019 11:29:11 +0000 (+0200) Subject: chan_pjsip: Prevent segfault when running PlayDTMF on hungup channel X-Git-Tag: 17.1.0-rc1~53^2 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=71f86e78b6e5694ef90baab9683f4f519d9540c1;p=thirdparty%2Fasterisk.git chan_pjsip: Prevent segfault when running PlayDTMF on hungup channel ASTERISK-28086 #close Change-Id: Ib3baadc89b9f0477a6f25a63861433812368c5ea --- diff --git a/channels/chan_pjsip.c b/channels/chan_pjsip.c index 9e0aa85591..f2f6cf8f29 100644 --- a/channels/chan_pjsip.c +++ b/channels/chan_pjsip.c @@ -2261,6 +2261,12 @@ static int chan_pjsip_digit_end(struct ast_channel *ast, char digit, unsigned in struct ast_sip_session_media *media; int res = 0; + if (!channel || !channel->session) { + /* This happens when the channel is hungup while a DTMF digit is playing. See ASTERISK-28086 */ + ast_debug(3, "Channel %s disappeared while calling digit_end\n", ast_channel_name(ast)); + return -1; + } + media = channel->session->active_media_state->default_session[AST_MEDIA_TYPE_AUDIO]; switch (channel->session->dtmf) {