php.net |  support |  documentation |  report a bug |  advanced search |  search howto |  statistics |  random bug |  login
Bug #73119 Wrong return with addEmptyDir Zip Method
Submitted: 2016-09-20 05:58 UTC Modified: 2018-03-17 18:11 UTC
Votes:1
Avg. Score:5.0 ± 0.0
Reproduced:0 of 0 (0.0%)
From: hoangtuan180991 at gmail dot com Assigned:
Status: Open Package: Zip Related
PHP Version: 5.6 OS: Ubuntu 12.04
Private report: No CVE-ID: None
View Add Comment Developer Edit
Welcome! If you don't have a Git account, you can't do anything here.
You can add a comment by following this link or if you reported this bug, you can edit this bug over here.
(description)
Block user comment
Status: Assign to:
Package:
Bug Type:
Summary:
From: hoangtuan180991 at gmail dot com
New email:
PHP Version: OS:

 

 [2016-09-20 05:58 UTC] 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] => 
)

Patches

Add a Patch

Pull Requests

Add a Pull Request

History

AllCommentsChangesGit/SVN commitsRelated reports
 [2016-09-21 02:28 UTC] stas@php.net
-Type: Security +Type: Bug
 [2016-11-13 07:28 UTC] krakjoe@php.net
-PHP Version: 7.1.0RC2 +PHP Version: 5.6
 [2016-11-13 07:28 UTC] krakjoe@php.net
Changed version, this applies to all active branches.
 [2018-03-17 18:11 UTC] cmb@php.net
-Package: Filesystem function related +Package: Zip Related
 
PHP Copyright © 2001-2019 The PHP Group
All rights reserved.
Last updated: Thu Jun 20 03:01:25 2019 UTC