From bc8d56816d79dd8ce1bf04d3316a0a18758b1c0b Mon Sep 17 00:00:00 2001 From: lvl Date: Tue, 1 Oct 2019 13:29:11 +0200 Subject: [PATCH] chan_pjsip: Prevent segfault when running PlayDTMF on hungup channel ASTERISK-28086 #close Change-Id: Ib3baadc89b9f0477a6f25a63861433812368c5ea --- channels/chan_pjsip.c | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/channels/chan_pjsip.c b/channels/chan_pjsip.c index a248cbb4c1..33abe03209 100644 --- a/channels/chan_pjsip.c +++ b/channels/chan_pjsip.c @@ -1922,6 +1922,12 @@ static int chan_pjsip_digit_end(struct ast_channel *ast, char digit, unsigned in struct ast_sip_session_media *media = pvt->media[SIP_MEDIA_AUDIO]; 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; + } + switch (channel->session->dtmf) { case AST_SIP_DTMF_AUTO_INFO: { -- 2.47.2