From a53877b46912d7f258a006056ecf30b88c608a17 Mon Sep 17 00:00:00 2001 From: Mark Michelson Date: Wed, 3 Dec 2008 18:37:46 +0000 Subject: Add some safety measures when using gosub, especially when using the options for app_dial and app_queue to run a gosub when the call is answered. * Check for the existence of the gosub target in gosub_exec. If it is nonexistent, then this will cause errors when we attempt to actually run the gosub, including a definite memory leak and potential crashes. Return an error in this situation * Check the return value of pbx_exec in app_dial and app_queue before attempting to actually run the gosub routine. If there was an error, we should not attempt to run the gosub. * Change a '|' to a ',' in app_queue. * Add some extra curly braces where they had been missing previously. (closes issue #13548) Reported by: fiddur git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@160626 65c4cc65-6c06-0410-ace0-fbb531ad65f3 --- apps/app_dial.c | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) (limited to 'apps/app_dial.c') diff --git a/apps/app_dial.c b/apps/app_dial.c index 462b30eb1..08e86466a 100644 --- a/apps/app_dial.c +++ b/apps/app_dial.c @@ -2081,14 +2081,16 @@ static int dial_exec_full(struct ast_channel *chan, void *data, struct ast_flags if (gosub_args) { res9 = pbx_exec(peer, theapp, gosub_args); - ast_pbx_run(peer); + if (!res9) { + ast_pbx_run(peer); + } ast_free(gosub_args); if (option_debug) ast_log(LOG_DEBUG, "Gosub exited with status %d\n", res9); - } else + } else { ast_log(LOG_ERROR, "Could not Allocate string for Gosub arguments -- Gosub Call Aborted!\n"); + } - res9 = 0; } else if (!res9) { ast_log(LOG_ERROR, "Could not find application Gosub\n"); res9 = -1; -- cgit v1.2.3