mirror of
https://github.com/php/php-src.git
synced 2026-03-24 00:02:20 +01:00
Merge branch 'PHP-8.4'
* PHP-8.4: Fix stack overflow detection for variable compilation
This commit is contained in:
71
Zend/tests/stack_limit/stack_limit_015.phpt
Normal file
71
Zend/tests/stack_limit/stack_limit_015.phpt
Normal 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
|
||||
@@ -11677,6 +11677,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);
|
||||
@@ -11685,6 +11687,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);
|
||||
|
||||
Reference in New Issue
Block a user