Bug #73119 [Opn->Csd]: Wrong return for ZipArchive::addEmptyDir Method

From: Date: Mon, 03 Feb 2020 09:09:34 +0000
Subject: Bug #73119 [Opn->Csd]: Wrong return for ZipArchive::addEmptyDir Method
References: 1  Groups: php.bugs 
Request: Send a blank email to php-bugs+get-225325@lists.php.net to get a copy of this message
Edit report at https://bugs.php.net/bug.php?id=73119&edit=1 ID: 73119 Updated by: remi@php.net Reported by: hoangtuan180991 at gmail dot com Summary: Wrong return for ZipArchive::addEmptyDir Method -Status: Open +Status: Closed Type: Bug Package: Zip Related Operating System: Ubuntu 12.04 PHP Version: 5.6 Block user comment: N Private report: N New Comment: Automatic comment on behalf of remi@remirepo.net Revision: http://git.php.net/?p=php-src.git;a=commit;h=0bc19a4b819fb2e43812eece8514682136af37b2 Log: Fixed bug #73119 Wrong return for ZipArchive::addEmptyDir Method Previous Comments: ------------------------------------------------------------------------ [2016-11-13 07:28:52] krakjoe@php.net Changed version, this applies to all active branches. ------------------------------------------------------------------------ [2016-09-20 05:58:30] hoangtuan180991 at gmail dot com Description: ------------ function static ZIPARCHIVE_METHOD(addEmptyDir) still return true but the directory did not created. idx = zip_stat(intern, s, 0, &sb); if (idx >= 0) { RETVAL_FALSE; } else { if (zip_add_dir(intern, (const char *)s) == -1) { RETVAL_FALSE; } zip_error_clear(intern); RETVAL_TRUE; } I propose the following patch: ````` --- a/ext/zip/php_zip.c +++ b/ext/zip/php_zip.c @@ -1603,10 +1603,14 @@ static ZIPARCHIVE_METHOD(addEmptyDir) RETVAL_FALSE; } else { if (zip_add_dir(intern, (const char *)s) == -1) { + zip_error_clear(intern); RETVAL_FALSE; } - zip_error_clear(intern); - RETVAL_TRUE; + else + { + zip_error_clear(intern); + RETVAL_TRUE; + } } if (s != dirname) { Test script: --------------- <?php ini_set('memory_limit', -1); $archive = new ZipArchive(); $archive->open('_test.zip', ZIPARCHIVE::CREATE); var_dump($archive->addEmptyDir(str_repeat("t", 0x7fffffff))); print_r($archive); $archive->close(); ?> Expected result: ---------------- bool(false) ZipArchive Object ( [status] => 0 [statusSys] => 0 [numFiles] => 0 [filename] => /home/tuannh/BUGS/TBB_TEST/_test.zip [comment] => ) Actual result: -------------- bool(true) ZipArchive Object ( [status] => 0 [statusSys] => 0 [numFiles] => 0 [filename] => /home/tuannh/BUGS/TBB_TEST/_test.zip [comment] => ) ------------------------------------------------------------------------ -- Edit this bug report at https://bugs.php.net/bug.php?id=73119&edit=1

« previous php.bugs (#225325) next »