1
0
mirror of https://github.com/php/php-src.git synced 2026-03-24 00:02:20 +01:00

Merge branch 'PHP-8.3' into PHP-8.4

* PHP-8.3:
  Fix stack overflow detection for variable compilation
This commit is contained in:
Ilija Tovilo
2025-01-29 23:28:16 +01:00
3 changed files with 79 additions and 0 deletions

4
NEWS
View File

@@ -5,6 +5,10 @@ PHP NEWS
- BCMath:
. Fixed bug GH-17398 (bcmul memory leak). (SakiTakamachi)
- Core:
. Fixed bug GH-17623 (Broken stack overflow detection for variable
compilation). (ilutov)
- DOM:
. Fixed bug GH-17609 (Typo in error message: Dom\NO_DEFAULT_NS instead of
Dom\HTML_NO_DEFAULT_NS). (nielsdos)

View File

@@ -0,0 +1,71 @@
--TEST--
Stack limit 015 - Internal stack limit check in zend_compile_var()
--CREDITS--
abdullahasif88
--SKIPIF--
<?php
if (!function_exists('zend_test_zend_call_stack_get')) die("skip zend_test_zend_call_stack_get() is not available");
?>
--EXTENSIONS--
zend_test
--INI--
zend.max_allowed_stack_size=128K
--FILE--
<?php
$test
->p->p->p->p->p->p->p->p->p->p
->p->p->p->p->p->p->p->p->p->p
->p->p->p->p->p->p->p->p->p->p
->p->p->p->p->p->p->p->p->p->p
->p->p->p->p->p->p->p->p->p->p
->p->p->p->p->p->p->p->p->p->p
->p->p->p->p->p->p->p->p->p->p
->p->p->p->p->p->p->p->p->p->p
->p->p->p->p->p->p->p->p->p->p
->p->p->p->p->p->p->p->p->p->p
->p->p->p->p->p->p->p->p->p->p
->p->p->p->p->p->p->p->p->p->p
->p->p->p->p->p->p->p->p->p->p
->p->p->p->p->p->p->p->p->p->p
->p->p->p->p->p->p->p->p->p->p
->p->p->p->p->p->p->p->p->p->p
->p->p->p->p->p->p->p->p->p->p
->p->p->p->p->p->p->p->p->p->p
->p->p->p->p->p->p->p->p->p->p
->p->p->p->p->p->p->p->p->p->p
->p->p->p->p->p->p->p->p->p->p
->p->p->p->p->p->p->p->p->p->p
->p->p->p->p->p->p->p->p->p->p
->p->p->p->p->p->p->p->p->p->p
->p->p->p->p->p->p->p->p->p->p
->p->p->p->p->p->p->p->p->p->p
->p->p->p->p->p->p->p->p->p->p
->p->p->p->p->p->p->p->p->p->p
->p->p->p->p->p->p->p->p->p->p
->p->p->p->p->p->p->p->p->p->p
->p->p->p->p->p->p->p->p->p->p
->p->p->p->p->p->p->p->p->p->p
->p->p->p->p->p->p->p->p->p->p
->p->p->p->p->p->p->p->p->p->p
->p->p->p->p->p->p->p->p->p->p
->p->p->p->p->p->p->p->p->p->p
->p->p->p->p->p->p->p->p->p->p
->p->p->p->p->p->p->p->p->p->p
->p->p->p->p->p->p->p->p->p->p
->p->p->p->p->p->p->p->p->p->p
->p->p->p->p->p->p->p->p->p->p
->p->p->p->p->p->p->p->p->p->p
->p->p->p->p->p->p->p->p->p->p
->p->p->p->p->p->p->p->p->p->p
->p->p->p->p->p->p->p->p->p->p
->p->p->p->p->p->p->p->p->p->p
->p->p->p->p->p->p->p->p->p->p
->p->p->p->p->p->p->p->p->p->p
->p->p->p->p->p->p->p->p->p->p
->p->p->p->p->p->p->p->p->p->p
;
?>
--EXPECTF--
Fatal error: Maximum call stack size of %d bytes (zend.max_allowed_stack_size - zend.reserved_stack_size) reached during compilation. Try splitting expression in %s on line %d

View File

@@ -11633,6 +11633,8 @@ static zend_op *zend_compile_var_inner(znode *result, zend_ast *ast, uint32_t ty
static zend_op *zend_compile_var(znode *result, zend_ast *ast, uint32_t type, bool by_ref) /* {{{ */
{
zend_check_stack_limit();
uint32_t checkpoint = zend_short_circuiting_checkpoint();
zend_op *opcode = zend_compile_var_inner(result, ast, type, by_ref);
zend_short_circuiting_commit(checkpoint, result, ast);
@@ -11641,6 +11643,8 @@ static zend_op *zend_compile_var(znode *result, zend_ast *ast, uint32_t type, bo
static zend_op *zend_delayed_compile_var(znode *result, zend_ast *ast, uint32_t type, bool by_ref) /* {{{ */
{
zend_check_stack_limit();
switch (ast->kind) {
case ZEND_AST_VAR:
return zend_compile_simple_var(result, ast, type, 1);