summaryrefslogtreecommitdiff
path: root/ext
diff options
context:
space:
mode:
Diffstat (limited to 'ext')
-rw-r--r--ext/zip/php_zip.c4
-rw-r--r--ext/zip/tests/bug72660.phpt20
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