Closed
Description
Description
Run the following test code (phpt):
--TEST--
Applying zero offset to null pointer in zend_hash.c
--INI--
phar.require_hash=0
phar.readonly=0
--FILE--
<?php
$fname = __DIR__ . '/' . basename(__FILE__, '.php') . '.phar.php';
$pname = 'phar://' . $fname;
$file = "<?php
Phar::mapPhar('hio');
__HALT_COMPILER(); ?>";
$files = array();
$files['a'] = 'a';
include 'files/phar_test.inc';
include $fname;
echo file_get_contents('phar://hio/a');
$fname = __DIR__ . '/' . basename(__FILE__, '.php') . '.phar.php';
$pname = 'phar://' . $fname;
$file = "<?php __HALT_COMPILER(); ?>";
$files = array();
$files['a'] = array('cont' => 'a');
include 'files/phar_test.inc';
foreach($files as $name => $cont) {
var_dump(file_get_contents($pname.'/'.$name));
}
$phar = new Phar($fname);
var_dump($phar->getMetadata());
$phar->setMetadata((object) ['my' => 'friend']);
unset($phar);
// NOTE: Phar will use the cached value of metadata if setMetaData was called on that Phar path before.
// Save the writes to the phar and use a different file path.
$fname_new = "$fname.copy.php";
copy($fname, $fname_new);
$phar = new Phar($fname_new);
var_dump($phar->getMetadata());
?>
--EXTENSIONS--
phar
--CLEAN--
<?php unlink(__DIR__ . '/' . basename(__FILE__, '.clean.php') . '.phar.php'); ?>
<?php
unlink(__DIR__ . '/' . basename(__FILE__, '.clean.php') . '.phar.php');
unlink(__DIR__ . '/' . basename(__FILE__, '.clean.php') . '.phar.php.copy.php');
?>
--CREDITS--
Yuancheng Jiang <[email protected]>
Felix De Vliegher <[email protected]>
--EXPECT--
a
int(0)
RegexIterator::setMode(): Argument #1 ($mode) must be RegexIterator::MATCH, RegexIterator::GET_MATCH, RegexIterator::ALL_MATCHES, RegexIterator::SPLIT, or RegexIterator::REPLACE
int(0)
string(1) "a"
NULL
object(stdClass)#2 (1) {
["my"]=>
string(6) "friend"
}
phar_test.inc: https://github.com/php/php-src/blob/master/ext/phar/tests/files/phar_test.inc
Resulted in this output:
/php-src/Zend/zend_hash.c:1800:2: runtime error: applying zero offset to null pointer
SUMMARY: UndefinedBehaviorSanitizer: undefined-behavior /php-src/Zend/zend_hash.c:1800:2 in
PHP Version
PHP 8.4.0-dev
Operating System
ubuntu 22.04