From c36ce04dd36c5d90363f843bc7fea1bb753cef93 Mon Sep 17 00:00:00 2001 From: "Christoph M. Becker" Date: Mon, 20 Jul 2015 17:22:08 +0200 Subject: [PATCH] Fix #70103: ZipArchive::addGlob ignores remove_all_path option When the remove_all_path option is set, but no add_path option, remove_all_path is simply ignored. This patch fixes this. --- ext/zip/php_zip.c | 4 ++-- ext/zip/tests/bug70103.phpt | 34 ++++++++++++++++++++++++++++++++++ 2 files changed, 36 insertions(+), 2 deletions(-) create mode 100644 ext/zip/tests/bug70103.phpt diff --git a/ext/zip/php_zip.c b/ext/zip/php_zip.c index 672097dec5d59..f32d515b831ae 100644 --- a/ext/zip/php_zip.c +++ b/ext/zip/php_zip.c @@ -1691,8 +1691,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 0000000000000..7744532cfa069 --- /dev/null +++ b/ext/zip/tests/bug70103.phpt @@ -0,0 +1,34 @@ +--TEST-- +Bug #70103 (ZipArchive::addGlob ignores remove_all_path option) +--SKIPIF-- + +--FILE-- +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-- + +--EXPECT-- +int(1) +string(7) "foo.txt"