From e03c6ed738a68aaecbead0606130826bdbb32d22 Mon Sep 17 00:00:00 2001 From: Jason Parker Date: Mon, 31 Jan 2011 22:56:54 +0000 Subject: [PATCH] Prevent a crash when dialing a technology with no destination (ex: Dial(SIP/)) chan_iax2 and other channel drivers already had code to prevent this. The attempt that app_dial was making to prevent it was not correct, so I fixed that. (closes issue #18371) Reported by: gbour Patches: 18371.patch uploaded by gbour (license 1162) git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.4@305252 65c4cc65-6c06-0410-ace0-fbb531ad65f3 --- apps/app_dial.c | 2 +- channels/chan_sip.c | 6 ++++++ 2 files changed, 7 insertions(+), 1 deletion(-) diff --git a/apps/app_dial.c b/apps/app_dial.c index 8f77b9c4a9..3f0c67082a 100644 --- a/apps/app_dial.c +++ b/apps/app_dial.c @@ -1224,7 +1224,7 @@ static int dial_exec_full(struct ast_channel *chan, void *data, struct ast_flags struct ast_dialed_interface *di; AST_LIST_HEAD(, ast_dialed_interface) *dialed_interfaces; num_dialed++; - if (!number) { + if (ast_strlen_zero(number)) { ast_log(LOG_WARNING, "Dial argument takes format (technology/[device:]number1)\n"); goto out; } diff --git a/channels/chan_sip.c b/channels/chan_sip.c index 4f60e4369e..a38297ca29 100644 --- a/channels/chan_sip.c +++ b/channels/chan_sip.c @@ -18014,6 +18014,12 @@ static struct ast_channel *sip_request_call(const char *type, int format, void * if (option_debug) ast_log(LOG_DEBUG, "Asked to create a SIP channel with formats: %s\n", ast_getformatname_multiple(tmp, sizeof(tmp), oldformat)); + if (ast_strlen_zero(dest)) { + ast_log(LOG_ERROR, "Unable to create channel with empty destination.\n"); + *cause = AST_CAUSE_CHANNEL_UNACCEPTABLE; + return NULL; + } + if (!(p = sip_alloc(NULL, NULL, 0, SIP_INVITE))) { ast_log(LOG_ERROR, "Unable to build sip pvt data for '%s' (Out of memory or socket error)\n", (char *)data); *cause = AST_CAUSE_SWITCH_CONGESTION;