From 3c274613dc76007f5227aa162e02d5943b683d37 Mon Sep 17 00:00:00 2001 From: Remi Collet Date: Mon, 3 Feb 2020 10:06:44 +0100 Subject: [PATCH] Fixed bug #73119 Wrong return for ZipArchive::addEmptyDir Method --- ext/zip/php_zip.c | 10 +++++++--- ext/zip/tests/oo_namelocate.zip | Bin 0 -> 344 bytes 2 files changed, 7 insertions(+), 3 deletions(-) create mode 100644 ext/zip/tests/oo_namelocate.zip diff --git a/ext/zip/php_zip.c b/ext/zip/php_zip.c index c6ce639b88f..22f9895ad80 100644 --- a/ext/zip/php_zip.c +++ b/ext/zip/php_zip.c @@ -1626,11 +1626,12 @@ static ZIPARCHIVE_METHOD(addEmptyDir) if (idx >= 0) { RETVAL_FALSE; } else { - if (zip_add_dir(intern, (const char *)s) == -1) { + if (zip_dir_add(intern, (const char *)s, 0) == -1) { RETVAL_FALSE; + } else { + zip_error_clear(intern); + RETVAL_TRUE; } - zip_error_clear(intern); - RETVAL_TRUE; } if (s != dirname) { @@ -3044,6 +3045,9 @@ static PHP_MINIT_FUNCTION(zip) REGISTER_ZIP_CLASS_CONST_LONG("EXCL", ZIP_EXCL); REGISTER_ZIP_CLASS_CONST_LONG("CHECKCONS", ZIP_CHECKCONS); REGISTER_ZIP_CLASS_CONST_LONG("OVERWRITE", ZIP_OVERWRITE); +#ifdef ZIP_RDONLY + REGISTER_ZIP_CLASS_CONST_LONG("RDONLY", ZIP_RDONLY); +#endif REGISTER_ZIP_CLASS_CONST_LONG("FL_NOCASE", ZIP_FL_NOCASE); REGISTER_ZIP_CLASS_CONST_LONG("FL_NODIR", ZIP_FL_NODIR); diff --git a/ext/zip/tests/oo_namelocate.zip b/ext/zip/tests/oo_namelocate.zip new file mode 100644 index 0000000000000000000000000000000000000000..9754e4c7bf80579987d5ccd88b34ca6c632ab6cc GIT binary patch literal 344 zcmWIWW@h1H00Hj+=YZQOJYP6~Y!C*CrskCtRT}D*RFr^O3d)87DC!eUS#vSe8zHGT z!mXYkXnsm&kv`aDqZCw4j7;{-xSa*m2?pC5K@`G~0p6(k(47a-#lWzw(Ez3o>{xvI fK+c4LZH);)CYqxIyjj^m3YdX#Es&lH;xGUJdHX(q literal 0 HcmV?d00001