diff options
-rw-r--r-- | NEWS | 4 | ||||
-rw-r--r-- | ext/zip/php_zip.c | 4 | ||||
-rw-r--r-- | ext/zip/tests/bug72660.phpt | 20 |
3 files changed, 26 insertions, 2 deletions
@@ -96,6 +96,10 @@ PHP NEWS - Wddx: . Fixed bug #72564 (boolean always deserialized as "true") (Remi) +- Zip: + . Fixed bug #72660 (NULL Pointer dereference in zend_virtual_cwd). + (Laruence) + 21 Jul 2016 PHP 7.0.9 - Core: diff --git a/ext/zip/php_zip.c b/ext/zip/php_zip.c index bdcba78b21..b9f0bb73ac 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 |