From d8e7897f1edd3244887eecdb1bc6428f034f9d62 Mon Sep 17 00:00:00 2001 From: Michael Jerris Date: Thu, 17 Sep 2015 22:04:19 -0500 Subject: [PATCH] FS-8185: [core] Allow xml preprocessor to expand variables where the resulting value is much longer than the original size --- src/switch_xml.c | 14 ++++++++++++-- 1 file changed, 12 insertions(+), 2 deletions(-) diff --git a/src/switch_xml.c b/src/switch_xml.c index 4cf4bb3ad9..43ffabfcc7 100644 --- a/src/switch_xml.c +++ b/src/switch_xml.c @@ -1254,6 +1254,11 @@ static char *expand_vars(char *buf, char *ebuf, switch_size_t elen, switch_size_ *wp++ = *rp++; } + + if (wp == ep) { + return NULL; + } + *wp++ = '\0'; *newlen = strlen(ebuf); @@ -1394,11 +1399,16 @@ static int preprocess(const char *cwd, const char *file, FILE *write_fd, int rle break; } - eblen = len *2; + eblen = len * 2; ebuf = malloc(eblen); memset(ebuf, 0, eblen); - bp = expand_vars(buf, ebuf, eblen, &cur, &err); + while (!(bp = expand_vars(buf, ebuf, eblen, &cur, &err))) { + eblen *= 2; + ebuf = realloc(ebuf, eblen); + memset(ebuf, 0, eblen); + } + line++; if (err) {