From 9e1b285f65a5df3fa5366e6c8241152a4ceb88d4 Mon Sep 17 00:00:00 2001 From: David Carlier Date: Mon, 25 May 2026 06:02:18 +0100 Subject: [PATCH] Fix GH-22142: Assertion failure in zendi_try_get_long() on IS_UNDEF. close GH-22143 --- NEWS | 2 ++ Zend/zend_operators.c | 1 + ext/zlib/tests/gh22142.phpt | 20 ++++++++++++++++++++ 3 files changed, 23 insertions(+) create mode 100644 ext/zlib/tests/gh22142.phpt diff --git a/NEWS b/NEWS index aa5e42b36679..23212414d361 100644 --- a/NEWS +++ b/NEWS @@ -19,6 +19,8 @@ PHP NEWS . Enabled the TAILCALL VM on Windows when compiling with Clang >= 19 x86_64. (henderkes) . Deprecate specifying a nullable return type for __debugInfo(). (timwolla) + . Fixed bug GH-22142 (Assertion failure in zendi_try_get_long() on IS_UNDEF). + (David Carlier) - BCMath: . Added NUL-byte validation to BCMath functions. (jorgsowa) diff --git a/Zend/zend_operators.c b/Zend/zend_operators.c index c54f4f0c2a22..a43fdcc9a48b 100644 --- a/Zend/zend_operators.c +++ b/Zend/zend_operators.c @@ -448,6 +448,7 @@ static zend_never_inline zend_long ZEND_FASTCALL zendi_try_get_long(const zval * ZEND_ASSERT(Z_TYPE(dst) == IS_LONG); return Z_LVAL(dst); } + case IS_UNDEF: case IS_RESOURCE: case IS_ARRAY: *failed = true; diff --git a/ext/zlib/tests/gh22142.phpt b/ext/zlib/tests/gh22142.phpt new file mode 100644 index 000000000000..84397a4e85a9 --- /dev/null +++ b/ext/zlib/tests/gh22142.phpt @@ -0,0 +1,20 @@ +--TEST-- +GH-22142 (Assertion failure in zendi_try_get_long() on IS_UNDEF) +--EXTENSIONS-- +zlib +--FILE-- +getMessage(), PHP_EOL; +} + +?> +--EXPECT-- +deflate_init(): Argument #2 ($options) the value for option "level" must be of type int, null given