summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rwxr-xr-xapps/app_dial.c4
1 files changed, 3 insertions, 1 deletions
diff --git a/apps/app_dial.c b/apps/app_dial.c
index a8070e6fc..02ed8d344 100755
--- a/apps/app_dial.c
+++ b/apps/app_dial.c
@@ -290,6 +290,7 @@ static int dial_exec(struct ast_channel *chan, void *data)
int to;
int allowredir=0;
char numsubst[AST_MAX_EXTENSION];
+ char restofit[AST_MAX_EXTENSION];
char *newnum;
if (!data) {
@@ -329,7 +330,8 @@ static int dial_exec(struct ast_channel *chan, void *data)
strncpy(numsubst, number, sizeof(numsubst));
/* If we're dialing by extension, look at the extension to know what to dial */
if ((newnum = strstr(numsubst, "BYEXTENSION"))) {
- snprintf(newnum, sizeof(numsubst) - (newnum - numsubst), "%s", chan->exten);
+ strncpy(restofit, newnum + strlen("BYEXTENSION"), sizeof(restofit));
+ snprintf(newnum, sizeof(numsubst) - (newnum - numsubst), "%s%s", chan->exten,restofit);
/* By default, if we're dialing by extension, don't permit redirecting */
tmp->allowredirect = 0;
if (option_debug)