mirror of
https://github.com/php/php-src.git
synced 2026-03-24 00:02:20 +01:00
Merge branch 'PHP-8.1' into PHP-8.2
* PHP-8.1: Fix GH-10251: Assertion `(flag & (1<<3)) == 0' failed. Fix GH-9710: phpdbg memory leaks by option "-h"
This commit is contained in:
2
NEWS
2
NEWS
@@ -5,6 +5,7 @@ PHP NEWS
|
||||
- Core:
|
||||
. Fixed bug GH-10200 (zif_get_object_vars:
|
||||
Assertion `!(((__ht)->u.flags & (1<<2)) != 0)' failed). (nielsdos)
|
||||
. Fix GH-10251 (Assertion `(flag & (1<<3)) == 0' failed). (nielsdos)
|
||||
|
||||
- FPM:
|
||||
. Fixed bug #77106 (Missing separator in FPM FastCGI errors). (Jakub Zelenka)
|
||||
@@ -26,6 +27,7 @@ PHP NEWS
|
||||
- PHPDBG:
|
||||
. Fix undefined behaviour in phpdbg_load_module_or_extension(). (nielsdos)
|
||||
. Fix NULL pointer dereference in phpdbg_create_conditional_breal(). (nielsdos)
|
||||
. Fix GH-9710: phpdbg memory leaks by option "-h" (nielsdos)
|
||||
|
||||
- Posix:
|
||||
. Fix memory leak in posix_ttyname() (girgias)
|
||||
|
||||
24
Zend/tests/gh10251.phpt
Normal file
24
Zend/tests/gh10251.phpt
Normal file
@@ -0,0 +1,24 @@
|
||||
--TEST--
|
||||
GH-10251 (Assertion `(flag & (1<<3)) == 0' failed.)
|
||||
--FILE--
|
||||
<?php
|
||||
class A
|
||||
{
|
||||
function __set($o, $l)
|
||||
{
|
||||
$this->$p = $v;
|
||||
}
|
||||
}
|
||||
$a = new A();
|
||||
$pp = "";
|
||||
$op = $pp & "";
|
||||
// Bitwise operators on strings don't compute the hash.
|
||||
// The code below previously assumed a hash was actually computed, leading to a crash.
|
||||
$a->$op = 0;
|
||||
echo "Done\n";
|
||||
?>
|
||||
--EXPECTF--
|
||||
Warning: Undefined variable $v in %s on line %d
|
||||
|
||||
Warning: Undefined variable $p in %s on line %d
|
||||
Done
|
||||
@@ -553,9 +553,8 @@ ZEND_API uint32_t *zend_get_property_guard(zend_object *zobj, zend_string *membe
|
||||
if (EXPECTED(Z_TYPE_P(zv) == IS_STRING)) {
|
||||
zend_string *str = Z_STR_P(zv);
|
||||
if (EXPECTED(str == member) ||
|
||||
/* "str" always has a pre-calculated hash value here */
|
||||
(EXPECTED(ZSTR_H(str) == zend_string_hash_val(member)) &&
|
||||
EXPECTED(zend_string_equal_content(str, member)))) {
|
||||
/* str and member don't necessarily have a pre-calculated hash value here */
|
||||
EXPECTED(zend_string_equal_content(str, member))) {
|
||||
return &Z_PROPERTY_GUARD_P(zv);
|
||||
} else if (EXPECTED(Z_PROPERTY_GUARD_P(zv) == 0)) {
|
||||
zval_ptr_dtor_str(zv);
|
||||
|
||||
@@ -1378,6 +1378,8 @@ phpdbg_main:
|
||||
get_zend_version()
|
||||
);
|
||||
}
|
||||
PHPDBG_G(flags) |= PHPDBG_IS_QUITTING;
|
||||
php_module_shutdown();
|
||||
sapi_deactivate();
|
||||
sapi_shutdown();
|
||||
php_ini_builder_deinit(&ini_builder);
|
||||
|
||||
Reference in New Issue
Block a user