Fix incorrect optimization

Fixes oss-fuzz #57482
This commit is contained in:
Dmitry Stogov 2023-03-27 17:57:54 +03:00
parent 9b15537e9a
commit 1f5d9534ae
2 changed files with 16 additions and 1 deletions

View file

@ -257,7 +257,7 @@ static void zend_optimize_block(zend_basic_block *block, zend_op_array *op_array
break;
case ZEND_MATCH_ERROR:
if (opline->op1_type == IS_TMP_VAR) {
if (opline->op1_type & (IS_TMP_VAR|IS_VAR)) {
src = VAR_SOURCE(opline->op1);
VAR_SOURCE(opline->op1) = NULL;
}

View file

@ -0,0 +1,15 @@
--TEST--
Match 003: SSA integrity verification failed because of incorrect optimization
--INI--
opcache.enable=1
opcache.enable_cli=1
opcache.optimization_level=-1
--FILE--
<?php
match(y()){};
?>
--EXPECTF--
Fatal error: Uncaught Error: Call to undefined function y() in %smatch_003.php:2
Stack trace:
#0 {main}
thrown in %smatch_003.php on line 2