]> git.ipfire.org Git - thirdparty/freeswitch.git/commitdiff
FS-8185: [core] Allow xml preprocessor to expand variables where the resulting value...
authorMichael Jerris <mike@jerris.com>
Fri, 18 Sep 2015 03:04:19 +0000 (22:04 -0500)
committerMichael Jerris <mike@jerris.com>
Mon, 21 Sep 2015 22:46:27 +0000 (17:46 -0500)
src/switch_xml.c

index 4cf4bb3ad92e48305b9dfdef54b4ed7dd6e4bf37..43ffabfcc7e98ef4d3e4c6eaa1b487baf458ce4e 100644 (file)
@@ -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) {