]> git.ipfire.org Git - thirdparty/asterisk.git/commitdiff
pbx_ael: Global variables are not expanded.
authorSean Bright <sean@seanbright.com>
Thu, 26 Jan 2023 20:18:08 +0000 (15:18 -0500)
committerGeorge Joseph <gjoseph@digium.com>
Mon, 30 Jan 2023 14:51:32 +0000 (08:51 -0600)
Variable references within global variable assignments are now
expanded rather than being included literally.

ASTERISK-30406 #close

Change-Id: I136e8d6395e90a4c92d9777a46a7bc3edb08d05d

res/ael/pval.c

index 10af1597e82d8d51b48d216a70c3830ae40b4413..8596d66373e458b259343a5e6e5d24944d169c94 100644 (file)
@@ -4414,7 +4414,11 @@ int ast_compile_ael2(struct ast_context **local_contexts, struct ast_hashtab *lo
 {
        pval *p,*p2;
        struct ast_context *context;
+#ifdef LOW_MEMORY
        char buf[2000];
+#else
+       char buf[8192];
+#endif
        struct ael_extension *exten;
        struct ael_extension *exten_list = 0;
 
@@ -4427,9 +4431,13 @@ int ast_compile_ael2(struct ast_context **local_contexts, struct ast_hashtab *lo
                case PV_GLOBALS:
                        /* just VARDEC elements */
                        for (p2=p->u1.list; p2; p2=p2->next) {
-                               char buf2[2000];
-                               snprintf(buf2,sizeof(buf2),"%s=%s", p2->u1.str, p2->u2.val);
-                               pbx_builtin_setvar(NULL, buf2);
+#ifdef STANDALONE
+                               snprintf(buf, sizeof(buf), "%s=%s", p2->u1.str, p2->u2.val);
+                               pbx_builtin_setvar(NULL, buf);
+#else
+                               pbx_substitute_variables_helper(NULL, p2->u2.val, buf, sizeof(buf) - 1);
+                               pbx_builtin_setvar_helper(NULL, p2->u1.str, buf);
+#endif
                        }
                        break;
                default: