From c6309af560feedf5ce044e02ccc2aab2f3040dcd Mon Sep 17 00:00:00 2001
From: Naveen Albert <asterisk@phreaknet.org>
Date: Sat, 20 Nov 2021 20:37:16 +0000
Subject: [PATCH] pbx_variables: Increase parsing capabilities of MSet

Currently MSet can only parse a maximum of 24 variables.
If more variables are provided to MSet, the 24th variable
will simply contain the remainder of the string and the
remaining variables thereafter will never get set.

This increases the number of variables that can be parsed
in one go from 24 to 99. Additionally, documentation is added
since this limitation is currently undocumented and is
confusing to users who encounter this limitation.

ASTERISK-29766 #close

Change-Id: I3fe35b462dedec0a452fd9ea7f92c920a3939f16
---
 main/pbx_variables.c | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

diff --git a/main/pbx_variables.c b/main/pbx_variables.c
index b6c0dd8d53..2088740c7c 100644
--- a/main/pbx_variables.c
+++ b/main/pbx_variables.c
@@ -98,6 +98,7 @@
 			double-quotes from the right-hand side (value). If you need to put a separator
 			character (comma or vert-bar), you will need to escape them by inserting a backslash
 			before them. Avoid its use if possible.</para>
+			<para>This application allows up to 99 variables to be set at once.</para>
 		</description>
 		<see-also>
 			<ref type="application">Set</ref>
@@ -1171,7 +1172,7 @@ int pbx_builtin_setvar_multiple(struct ast_channel *chan, const char *vdata)
 	char *data;
 	int x;
 	AST_DECLARE_APP_ARGS(args,
-		AST_APP_ARG(pair)[24];
+		AST_APP_ARG(pair)[99]; /* parse up to 99 variables */
 	);
 	AST_DECLARE_APP_ARGS(pair,
 		AST_APP_ARG(name);
-- 
GitLab