mirror of
https://github.com/php/php-src.git
synced 2026-10-28 17:56:50 +08:00
- Replace bailout on OOM with UnwindExit - Properly reset various globals that may be accessed during startup Fix GHSA-w8hw-w9fx-j79w (CVE-2026-109618) Fix GHSA-6wmf-4rv5-p3rp (CVE-2026-109619) Co-authored-by: Ilija Tovilo <ilija.tovilo@me.com> Co-authored-by: Jakub Zelenka <bukka@php.net> Co-authored-by: Nora Dossche <7771979+ndossche@users.noreply.github.com> Co-authored-by: Nicolas Grekas <nicolas.grekas@gmail.com>
30 lines
613 B
PHP
30 lines
613 B
PHP
--TEST--
|
|
OOM: debug_backtrace() doesn't reach hard limit - named args
|
|
--INI--
|
|
memory_limit=8M
|
|
--FILE--
|
|
<?php
|
|
|
|
/* A variadic is required: extra named args are only accepted by a function
|
|
* that collects them. */
|
|
function f(int $n, ...$rest) {
|
|
if ($n > 0) {
|
|
f($n - 1, ...$GLOBALS['named']);
|
|
return;
|
|
}
|
|
debug_backtrace();
|
|
}
|
|
|
|
$named = [];
|
|
for ($i = 0; $i < 512; $i++) {
|
|
$named["a$i"] = 1;
|
|
}
|
|
$GLOBALS['named'] = $named;
|
|
|
|
f(450, ...$named);
|
|
|
|
echo "not reached\n";
|
|
?>
|
|
--EXPECTF--
|
|
Fatal error: Allowed memory size of 8388608 bytes exhausted %S(tried to allocate %d bytes) in %s on line %d
|