1
0
mirror of https://github.com/php/php-src.git synced 2026-03-24 00:02:20 +01:00

Merge branch 'PHP-8.2' into PHP-8.3

* PHP-8.2:
  Fix GH-16406: Assertion failure in ext/phar/phar.c:2808
This commit is contained in:
Niels Dossche
2024-10-17 21:23:47 +02:00
3 changed files with 41 additions and 0 deletions

3
NEWS
View File

@@ -57,6 +57,9 @@ PHP NEWS
. Fixed bug GH-16433 (Large values for openssl_csr_sign() $days overflow).
(cmb)
- Phar:
. Fixed bug GH-16406 (Assertion failure in ext/phar/phar.c:2808). (nielsdos)
- PHPDBG:
. Fixed bug GH-16174 (Empty string is an invalid expression for ev). (cmb)

View File

@@ -2300,6 +2300,9 @@ no_copy:
newentry.tar_type = (entry->is_dir ? TAR_DIR : TAR_FILE);
}
/* The header offset is only used for unmodified zips.
* Once modified, phar_zip_changed_apply_int() will update the header_offset. */
newentry.header_offset = 0;
newentry.is_modified = 1;
newentry.phar = phar;
newentry.old_flags = newentry.flags & ~PHAR_ENT_COMPRESSION_MASK; /* remove compression from old_flags */

View File

@@ -0,0 +1,35 @@
--TEST--
GH-16406 (Assertion failure in ext/phar/phar.c:2808)
--EXTENSIONS--
phar
zlib
--INI--
phar.readonly=0
phar.require_hash=0
--FILE--
<?php
$fname = __DIR__ . '/gh16406.phar';
@unlink($fname . '.tar');
@unlink($fname . '.gz');
@unlink($fname);
$file = '<?php __HALT_COMPILER(); ?>';
$files['b'] = 'b';
$files['c'] = 'c';
include __DIR__.'/files/phar_test.inc';
$phar = new Phar($fname);
$phar->compressFiles(Phar::GZ);
$phar = $phar->convertToExecutable(Phar::TAR);
$phar = $phar->convertToExecutable(Phar::PHAR, Phar::GZ);
var_dump($phar['b']->openFile()->fread(4096));
var_dump($phar['c']->openFile()->fread(4096));
?>
--CLEAN--
<?php
$fname = __DIR__ . '/gh16406.phar';
@unlink($fname . '.tar');
@unlink($fname . '.gz');
@unlink($fname);
?>
--EXPECT--
string(1) "b"
string(1) "c"