Skip to content

Commit 1f5d953

Browse files
committed
Fix incorrect optimization
Fixes oss-fuzz #57482
1 parent 9b15537 commit 1f5d953

File tree

2 files changed

+16
-1
lines changed

2 files changed

+16
-1
lines changed

Zend/Optimizer/block_pass.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -257,7 +257,7 @@ static void zend_optimize_block(zend_basic_block *block, zend_op_array *op_array
257257
break;
258258

259259
case ZEND_MATCH_ERROR:
260-
if (opline->op1_type == IS_TMP_VAR) {
260+
if (opline->op1_type & (IS_TMP_VAR|IS_VAR)) {
261261
src = VAR_SOURCE(opline->op1);
262262
VAR_SOURCE(opline->op1) = NULL;
263263
}

ext/opcache/tests/opt/match_003.phpt

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
--TEST--
2+
Match 003: SSA integrity verification failed because of incorrect optimization
3+
--INI--
4+
opcache.enable=1
5+
opcache.enable_cli=1
6+
opcache.optimization_level=-1
7+
--FILE--
8+
<?php
9+
match(y()){};
10+
?>
11+
--EXPECTF--
12+
Fatal error: Uncaught Error: Call to undefined function y() in %smatch_003.php:2
13+
Stack trace:
14+
#0 {main}
15+
thrown in %smatch_003.php on line 2

0 commit comments

Comments
 (0)