Initialize data on the stack so that Park doesn't interpret random arguments.
authorJeff Peeler <jpeeler@digium.com>
Tue, 19 Jan 2010 22:59:53 +0000 (22:59 +0000)
committerJeff Peeler <jpeeler@digium.com>
Tue, 19 Jan 2010 22:59:53 +0000 (22:59 +0000)
passdata was only being set in pbx_substitue_variables when arguments were
passed.

(closes issue #16406)
(closes issue #16586)
Reported by: DLNoah
Patches:
      bug16586v2.patch uploaded by jpeeler (license 325)
Tested by: DLNoah

git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@241366 65c4cc65-6c06-0410-ace0-fbb531ad65f3

main/pbx.c

index d0ca80d..6f67aba 100644 (file)
@@ -3970,8 +3970,10 @@ static void pbx_substitute_variables(char *passdata, int datalen, struct ast_cha
        const char *tmp;
 
        /* Nothing more to do */
-       if (!e->data)
+       if (!e->data) {
+               *passdata = '\0';
                return;
+       }
 
        /* No variables or expressions in e->data, so why scan it? */
        if ((!(tmp = strchr(e->data, '$'))) || (!strstr(tmp, "${") && !strstr(tmp, "$["))) {