]> granicus.if.org Git - php/commitdiff
increase test coverage of phar_wrapper_mkdir, fix segfault when mkdir() on existing...
authorGreg Beaver <cellog@php.net>
Mon, 14 Apr 2008 15:46:06 +0000 (15:46 +0000)
committerGreg Beaver <cellog@php.net>
Mon, 14 Apr 2008 15:46:06 +0000 (15:46 +0000)
ext/phar/dirstream.c
ext/phar/tests/dir.phpt

index 5da223ade1372bf9c41135bded9caf5ae8de6d16..c4f1ec3c791051a0b079ab3a37dc5976e515fddb 100644 (file)
@@ -458,8 +458,6 @@ int phar_wrapper_mkdir(php_stream_wrapper *wrapper, char *url_from, int mode, in
 
        if ((e = phar_get_entry_info_dir(phar, resource->path + 1, strlen(resource->path + 1), 2, &error TSRMLS_CC))) {
                /* directory exists, or is a subdirectory of an existing file */
-               efree(e->filename);
-               efree(e);
                php_stream_wrapper_log_error(wrapper, options TSRMLS_CC, "phar error: cannot create directory \"%s\" in phar \"%s\", directory already exists", resource->path+1, resource->host);
                php_url_free(resource);
                return FAILURE;
index 2aa8880e3eaf552964b01b5e66c8aa72b5b90cc9..578e2df0125f96ee6db7b30e585c93b670fc5b45 100644 (file)
@@ -33,11 +33,15 @@ mkdir($pname . '/fails');
 ini_set('phar.readonly', 0);
 // create new phar by mkdir
 mkdir('phar://' . dirname(__FILE__) . '/ok.phar/fails');
+mkdir('phar://' . dirname(__FILE__) . '/ok.phar/fails');
+file_put_contents(dirname(__FILE__) . '/oops.phar', '<?php this should screw em up __HALT_COMPILER();');
+mkdir('phar://' . dirname(__FILE__) . '/oops.phar/fails');
 ?>
 ===DONE===
 --CLEAN--
 <?php unlink(dirname(__FILE__) . '/' . basename(__FILE__, '.clean.php') . '.phar.php'); ?>
 <?php unlink(dirname(__FILE__) . '/ok.phar'); ?>
+<?php unlink(dirname(__FILE__) . '/oops.phar'); ?>
 <?php unlink(dirname(__FILE__) . '/' . basename(__FILE__, '.clean.php') . '.1.phar.php'); ?>
 <?php unlink(dirname(__FILE__) . '/' . basename(__FILE__, '.clean.php') . '.2.phar.php'); ?>
 --EXPECTF--
@@ -50,4 +54,8 @@ bool(true)
 bool(false)
 
 Warning: mkdir(): phar error: cannot create directory "phar://%sdir.phar.php/fails", write operations disabled in %sdir.php on line %d
+
+Warning: mkdir(): phar error: cannot create directory "fails" in phar "%sok.phar", directory already exists in %sdir.php on line %d
+
+Warning: mkdir(): internal corruption of phar "%soops.phar" (truncated manifest at stub end) in %sdir.php on line %d
 ===DONE===
\ No newline at end of file