diff options
Diffstat (limited to 'ext')
| -rw-r--r-- | ext/zip/php_zip.c | 4 | ||||
| -rw-r--r-- | ext/zip/tests/bug72660.phpt | 20 |
2 files changed, 22 insertions, 2 deletions
diff --git a/ext/zip/php_zip.c b/ext/zip/php_zip.c index 484724aef6..0bd74d5a6c 100644 --- a/ext/zip/php_zip.c +++ b/ext/zip/php_zip.c @@ -1619,10 +1619,10 @@ static void php_zip_add_from_pattern(INTERNAL_FUNCTION_PARAMETERS, int type) /* { struct zip *intern; zval *self = getThis(); - char *path = NULL; + char *path = "."; char *remove_path = NULL; char *add_path = NULL; - size_t add_path_len, remove_path_len = 0, path_len = 0; + size_t add_path_len, remove_path_len = 0, path_len = 1; zend_long remove_all_path = 0; zend_long flags = 0; zval *options = NULL; diff --git a/ext/zip/tests/bug72660.phpt b/ext/zip/tests/bug72660.phpt new file mode 100644 index 0000000000..af02b9b5a3 --- /dev/null +++ b/ext/zip/tests/bug72660.phpt @@ -0,0 +1,20 @@ +--TEST-- +Bug #72660 (NULL Pointer dereference in zend_virtual_cwd) +--SKIPIF-- +<?php +if(!extension_loaded('zip')) die('skip'); +if(PHP_ZTS == 0) { die('skip ZTS required'); } +?> +--FILE-- +<?php +$zip = new ZipArchive(); +$zip->open(dirname(__FILE__) . "/bug72660.zip", ZIPARCHIVE::CREATE); +$zip->addPattern("/noexists/"); +?> +okey +--CLEAN-- +<?php +@unlink(dirname(__FILE__) . "/bug72660.zip"); +?> +--EXPECT-- +okey |
