]> git.ipfire.org Git - thirdparty/freeswitch.git/commitdiff
Fix leak-on-failure
authorMathieu Rene <mrene@avgs.ca>
Fri, 8 May 2009 04:33:58 +0000 (04:33 +0000)
committerMathieu Rene <mrene@avgs.ca>
Fri, 8 May 2009 04:33:58 +0000 (04:33 +0000)
git-svn-id: http://svn.freeswitch.org/svn/freeswitch/trunk@13260 d0543943-73ff-0310-b7d9-9358b9ac24b2

src/switch_xml.c

index 6bd0b2d2548d70236cf1b7b1461627a14cb71d0b..eccaa630a608ca1694d80e2964808cd9f3cb607b 100644 (file)
@@ -905,12 +905,18 @@ static void switch_xml_free_attr(char **attr)
 SWITCH_DECLARE(switch_xml_t) switch_xml_parse_str_dynamic(char *s, switch_bool_t dup) 
 {
        switch_xml_root_t root;
-       char *data = dup ? strdup(s) : s;
+       char *data;
+       
+       switch_assert(s);
+       data = dup ? strdup(s) : s;
        
        if ((root = (switch_xml_root_t) switch_xml_parse_str(data, strlen(data)))) {
                root->dynamic = 1; /* Make sure we free the memory is switch_xml_free() */
                return &root->xml;
        } else {
+               if (dup) {
+                       free(data);
+               }
                return NULL;
        }
 }