From: Michael Jerris Date: Fri, 18 Sep 2015 03:04:19 +0000 (-0500) Subject: FS-8185: [core] Allow xml preprocessor to expand variables where the resulting value... X-Git-Tag: v1.4.23~6 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=7dda9d01ead14d18fb46127f60c6c11916a8cfea;p=thirdparty%2Ffreeswitch.git FS-8185: [core] Allow xml preprocessor to expand variables where the resulting value is much longer than the original size --- 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) {