Files
php-src/Zend/tests/oom_unserialize_002.phpt
T
3584a98bda Avoid state corruption via bailout
- 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>
2026-10-21 16:06:22 +02:00

23 lines
592 B
PHP

--TEST--
OOM unserialize() array of strings
--INI--
memory_limit=200M
--FILE--
<?php
$chunks = [];
$chunksize = 128;
for ($i = 0; $i < 1024*1024; $i++) {
$chunkIdx = (int)($i / $chunksize);
$str = base_convert($i, 10, 36);
$chunks[$chunkIdx] = ($chunks[$chunkIdx] ?? '') . sprintf('i:%d;s:%d:"%s";', $i, strlen($str), $str);
}
$payload = 'a:'.$i.':{'.implode('', $chunks).'}';
ini_set('memory_limit', '100m');
var_dump(gettype(unserialize($payload)));
?>
--EXPECTF--
Fatal error: Allowed memory size of 104857600 bytes exhausted %S(tried to allocate %d bytes) in %s on line 13