diff options
author | Joe Watkins <krakjoe@php.net> | 2017-01-06 05:41:00 +0000 |
---|---|---|
committer | Joe Watkins <krakjoe@php.net> | 2017-01-06 05:41:40 +0000 |
commit | 1db0569514858523e83a7ddeee36f51b5f1c2266 (patch) | |
tree | 0f528c7ff12ccd179a9005533ba44c750b1cd188 /ext/zip | |
parent | a972143dd6360f61bef962e1badf1289b80476bb (diff) | |
parent | 3f89aec7169a095fc9d6dce4a94c726923a577f0 (diff) | |
download | php-git-1db0569514858523e83a7ddeee36f51b5f1c2266.tar.gz |
Merge branch 'PHP-7.1'
* PHP-7.1:
Fix #70103: ZipArchive::addGlob ignores remove_all_path option
news entry for PR #1430
Diffstat (limited to 'ext/zip')
-rw-r--r-- | ext/zip/php_zip.c | 4 | ||||
-rw-r--r-- | ext/zip/tests/bug70103.phpt | 34 |
2 files changed, 36 insertions, 2 deletions
diff --git a/ext/zip/php_zip.c b/ext/zip/php_zip.c index 2651ac499b..706ae07a3d 100644 --- a/ext/zip/php_zip.c +++ b/ext/zip/php_zip.c @@ -1704,8 +1704,8 @@ static void php_zip_add_from_pattern(INTERNAL_FUNCTION_PARAMETERS, int type) /* entry_name = entry_name_buf; entry_name_len = strlen(entry_name); } else { - entry_name = Z_STRVAL_P(zval_file); - entry_name_len = Z_STRLEN_P(zval_file); + entry_name = file_stripped; + entry_name_len = file_stripped_len; } if (basename) { zend_string_release(basename); diff --git a/ext/zip/tests/bug70103.phpt b/ext/zip/tests/bug70103.phpt new file mode 100644 index 0000000000..7744532cfa --- /dev/null +++ b/ext/zip/tests/bug70103.phpt @@ -0,0 +1,34 @@ +--TEST-- +Bug #70103 (ZipArchive::addGlob ignores remove_all_path option) +--SKIPIF-- +<?php +if (!extension_loaded('zip')) die('skip zip support not available'); +?> +--FILE-- +<?php +$dir = __DIR__ . '/bug70103'; + +mkdir($dir); chmod($dir, 0777); +file_put_contents($dir . '/foo.txt', 'foo'); + +$zip = new ZipArchive(); +$zip->open($dir . '/test.zip', ZipArchive::CREATE | ZipArchive::OVERWRITE); +$zip->addGlob($dir . '/*.txt', GLOB_NOSORT, array('remove_all_path' => true)); +$zip->close(); + +$zip = new ZipArchive(); +$zip->open($dir . '/test.zip'); +var_dump($zip->numFiles); +var_dump($zip->getNameIndex(0)); +$zip->close(); +?> +--CLEAN-- +<?php +$dir = __DIR__ . '/bug70103'; +unlink($dir . '/foo.txt'); +unlink($dir . '/test.zip'); +rmdir($dir); +?> +--EXPECT-- +int(1) +string(7) "foo.txt" |