Skip to content

Conversation

@pull
Copy link

@pull pull bot commented Jan 16, 2026

See Commits and Changes for more details.


Created by pull[bot] (v2.0.0-alpha.4)

Can you help keep this open source service alive? 💖 Please sponsor : )

iluuu1994 and others added 7 commits January 16, 2026 13:03
This can trigger the memory limit in run-tests.php, which buffers the tests
output. Instead, only output "nesting level too deep" and discard the rest.

Closes GH-20946
* PHP-8.4:
  Avoid huge output in gh20840.phpt
* PHP-8.5:
  Avoid huge output in gh20840.phpt
* Fix zend_call_trampoline_arginfo arg name

Name is "arguments" in documentation:
https://www.php.net/__call#language.oop5.overloading.methods

* Use zend_call_trampoline_arginfo in zend_get_call_trampoline_func()

* Copy the original arg_info in zend_closure_from_frame

None of these changes are observable, but this is cleaner, and this becomes observable in GH-20848.

Closes GH-20951
Within hooks, the backing value can directly be accessed as if no hooks were
present. This was previously handled only in read_property().

zend_fetch_property_address(), which is used for by-ref assignment, will first
call get_property_ptr_ptr() and then try read_property(). However, when called
on uninitialized backing values, read_property() will return
&EG(uninitialized_zval) with an uninitialized property warning. This is
problematic for zend_fetch_property_address() because it write to the result of
read_property() unless there's an exception.

For untyped properties, this can result in writes to &EG(uninitialized_zval)
(see oss-fuzz-471486164-001.phpt). For types properties, it will result in an
unexpected "Typed property C::$prop must not be accessed before initialization"
exception.

Fixes OSS-Fuzz #471486164
Closes GH-20943
* PHP-8.4:
  Fix by-ref assignment to uninitialized hooked backing value
* PHP-8.5:
  Fix by-ref assignment to uninitialized hooked backing value
@pull pull bot locked and limited conversation to collaborators Jan 16, 2026
@pull pull bot added the ⤵️ pull label Jan 16, 2026
* PHP-8.4:
  Fix uaf for nested finally with repeated return type check
* PHP-8.5:
  Fix uaf for nested finally with repeated return type check
UNSET_OBJ et al. do not expect to find IS_UNDEF results for IS_INDIRECT vars. To
solve this, return IS_NULL from FETCH_OBJ_UNSET when properties are
uninitialized. Do the same for FETCH_STATIC_PROP_IS, as we're otherwise copying
IS_UNDEF into the VAR result, which is not a valid value for VAR.

Fixes OSS-Fuzz #429429090
Closes GH-19160
These are leftovers from the pre-PHP-7.0 era. This also implicitly solves
GH-20564 by not clearing exceptions before entering the autoloader.

Closes GH-20256
Fixes GH-20564
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants