]> granicus.if.org Git - php/commitdiff
fix access to already free'ed memory
authorNuno Lopes <nlopess@php.net>
Mon, 29 Jan 2007 19:36:53 +0000 (19:36 +0000)
committerNuno Lopes <nlopess@php.net>
Mon, 29 Jan 2007 19:36:53 +0000 (19:36 +0000)
ext/soap/php_xml.c

index c5dbd640de345e022b09671668124d9a436d02bb..4e15fd64e80b4dc525dc5fd8408fb435a430b744 100644 (file)
@@ -87,12 +87,17 @@ xmlDocPtr soap_xmlParseFile(const char *filename TSRMLS_DC)
 */
 
        old_allow_url_fopen_list = PG(allow_url_fopen_list);
-       if (!old_allow_url_fopen_list) {
-               old_allow_url_fopen_list = "";
+       if (old_allow_url_fopen_list) {
+               old_allow_url_fopen_list = estrdup(old_allow_url_fopen_list);
+       } else {
+               old_allow_url_fopen_list = STR_EMPTY_ALLOC();
        }
+
        zend_alter_ini_entry("allow_url_fopen", sizeof("allow_url_fopen"), "*", 1, PHP_INI_SYSTEM, PHP_INI_STAGE_RUNTIME);
        ctxt = xmlCreateFileParserCtxt(filename);
        zend_alter_ini_entry("allow_url_fopen", sizeof("allow_url_fopen"), old_allow_url_fopen_list, strlen(old_allow_url_fopen_list), PHP_INI_SYSTEM, PHP_INI_STAGE_RUNTIME);
+       efree(old_allow_url_fopen_list);
+
        if (ctxt) {
                ctxt->keepBlanks = 0;
                ctxt->sax->ignorableWhitespace = soap_ignorableWhitespace;