From: Remi Collet Date: Fri, 28 Feb 2020 09:21:19 +0000 (+0100) Subject: Fix #79315 ZipArchive::addFile doesn't honor start/length parameters X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=5b2d4c0eccafcd648e574012a1c5331d6e1b1a4f;p=php Fix #79315 ZipArchive::addFile doesn't honor start/length parameters --- diff --git a/NEWS b/NEWS index a6c9cbf2b5..0818f715c5 100644 --- a/NEWS +++ b/NEWS @@ -24,6 +24,10 @@ PHP NEWS - Standard: . Fixed bug #79254 (getenv() w/o arguments not showing changes). (cmb) +- Zip: + . Fixed bug #79315 (ZipArchive::addFile doesn't honor start/length + parameters). (Remi) + 20 Feb 2020, PHP 7.3.15 - Core: diff --git a/ext/zip/php_zip.c b/ext/zip/php_zip.c index e607f0f077..f65f70621e 100644 --- a/ext/zip/php_zip.c +++ b/ext/zip/php_zip.c @@ -1824,7 +1824,8 @@ static ZIPARCHIVE_METHOD(addFile) entry_name_len = ZSTR_LEN(filename); } - if (php_zip_add_file(intern, ZSTR_VAL(filename), ZSTR_LEN(filename), entry_name, entry_name_len, 0, 0) < 0) { + if (php_zip_add_file(intern, ZSTR_VAL(filename), ZSTR_LEN(filename), + entry_name, entry_name_len, offset_start, offset_len) < 0) { RETURN_FALSE; } else { RETURN_TRUE; diff --git a/ext/zip/tests/oo_addfile.phpt b/ext/zip/tests/oo_addfile.phpt index b41e3dbf2c..37320de627 100644 --- a/ext/zip/tests/oo_addfile.phpt +++ b/ext/zip/tests/oo_addfile.phpt @@ -20,12 +20,20 @@ if (!$zip->open($file)) { if (!$zip->addFile($dirname . 'utils.inc', 'test.php')) { echo "failed\n"; } +if (!$zip->addFile($dirname . 'utils.inc', 'mini.txt', 12, 34)) { + echo "failed\n"; +} if ($zip->status == ZIPARCHIVE::ER_OK) { dump_entries_name($zip); $zip->close(); } else { echo "failed\n"; } +if (!$zip->open($file)) { + exit('failed'); +} +var_dump(strlen($zip->getFromName('test.php')) == filesize($dirname . 'utils.inc')); +var_dump(strlen($zip->getFromName('mini.txt')) == 34); @unlink($file); ?> --EXPECT-- @@ -34,3 +42,6 @@ if ($zip->status == ZIPARCHIVE::ER_OK) { 2 foobar/baz 3 entry1.txt 4 test.php +5 mini.txt +bool(true) +bool(true)