From 865aa54aac3fb0291c47b1f258d192cd8bc62cdf Mon Sep 17 00:00:00 2001 From: Igor Goncharovskiy Date: Thu, 30 Oct 2014 05:56:23 +0000 Subject: [PATCH] Add additional checks for NULL pointers to fix several crashes reported. ASTERISK-24304 #close Reported by: dhanapathy sathya git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/11@426666 65c4cc65-6c06-0410-ace0-fbb531ad65f3 --- channels/chan_unistim.c | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/channels/chan_unistim.c b/channels/chan_unistim.c index 173230e47f..0366e690a6 100644 --- a/channels/chan_unistim.c +++ b/channels/chan_unistim.c @@ -2550,6 +2550,9 @@ static void *unistim_ss(void *data) struct unistimsession *s = l->parent->session; int res; + if (!s) { + return NULL; + } ast_verb(3, "Starting switch on '%s@%s-%d' to %s\n", l->name, l->parent->name, sub->softkey, s->device->phone_number); ast_channel_exten_set(chan, s->device->phone_number); ast_copy_string(s->device->redial_number, s->device->phone_number, @@ -3306,6 +3309,9 @@ static void key_call(struct unistimsession *pte, char keycode) struct unistim_subchannel *sub = get_sub(pte->device, SUB_REAL); struct unistim_subchannel *sub_3way = get_sub(pte->device, SUB_THREEWAY); + if (!sub) { + return; + } if ((keycode >= KEY_0) && (keycode <= KEY_SHARP)) { if (keycode == KEY_SHARP) { keycode = '#'; @@ -3319,7 +3325,7 @@ static void key_call(struct unistimsession *pte, char keycode) } switch (keycode) { case KEY_FUNC1: - if (ast_channel_state(sub->owner) == AST_STATE_UP) { + if (sub->owner && ast_channel_state(sub->owner) == AST_STATE_UP) { if (sub_3way) { close_call(pte); } @@ -3361,8 +3367,8 @@ static void key_call(struct unistimsession *pte, char keycode) MUTE_OFF); break; case KEY_MUTE: - if (!sub || !sub->owner) { - ast_log(LOG_WARNING, "Unable to find subchannel for music on hold\n"); + if (!sub->owner) { + ast_log(LOG_WARNING, "Unable to find channel for music on hold\n"); return; } if (!sub->moh) {