aboutsummaryrefslogtreecommitdiffstats
path: root/apps/app_dial.c
diff options
context:
space:
mode:
authormmichelson <mmichelson@f38db490-d61c-443f-a65b-d21fe96a405b>2008-12-03 18:37:46 +0000
committermmichelson <mmichelson@f38db490-d61c-443f-a65b-d21fe96a405b>2008-12-03 18:37:46 +0000
commit58a09224a1d53367407f1ab6b1beb0bbc152d813 (patch)
treed931ed7c5f88409e7bd3390d3ed8074c86f632ed /apps/app_dial.c
parent88a0b23c5856660d5886d63e91e54c8fd6eee5a3 (diff)
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: http://svn.digium.com/svn/asterisk/trunk@160626 f38db490-d61c-443f-a65b-d21fe96a405b
Diffstat (limited to 'apps/app_dial.c')
-rw-r--r--apps/app_dial.c8
1 files changed, 5 insertions, 3 deletions
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;