diff options
author | Remi Collet <remi@php.net> | 2020-02-28 10:21:19 +0100 |
---|---|---|
committer | Remi Collet <remi@php.net> | 2020-02-28 10:29:50 +0100 |
commit | d31fc591e0a852c69b81b3311b3609221f66c445 (patch) | |
tree | fcf19375a939b7839ce0fb943ea2263674b8bfc8 /ext/zip | |
parent | 5b51b633e2509852312328d360639dacb35d12e6 (diff) | |
download | php-git-d31fc591e0a852c69b81b3311b3609221f66c445.tar.gz |
Fix #79315 ZipArchive::addFile doesn't honor start/length parameters
Diffstat (limited to 'ext/zip')
-rw-r--r-- | ext/zip/php_zip.c | 3 | ||||
-rw-r--r-- | ext/zip/tests/oo_addfile.phpt | 11 |
2 files changed, 13 insertions, 1 deletions
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) |