From 4b884bedc8de35ceb90d3e6978be580d5ce89864 Mon Sep 17 00:00:00 2001 From: Dmitry Stogov Date: Mon, 29 Aug 2022 14:36:16 +0300 Subject: [PATCH] JIT: Fix missing type store Fixes oss-fuzz #50653 --- ext/opcache/jit/zend_jit_trace.c | 2 +- ext/opcache/tests/jit/assign_054.phpt | 24 ++++++++++++++++++++++++ 2 files changed, 25 insertions(+), 1 deletion(-) create mode 100644 ext/opcache/tests/jit/assign_054.phpt diff --git a/ext/opcache/jit/zend_jit_trace.c b/ext/opcache/jit/zend_jit_trace.c index f89d6f8a40d..075acf5e6f8 100644 --- a/ext/opcache/jit/zend_jit_trace.c +++ b/ext/opcache/jit/zend_jit_trace.c @@ -6377,7 +6377,7 @@ done: } SET_STACK_TYPE(stack, EX_VAR_TO_NUM(opline->op2.var), type, (gen_handler || type == IS_UNKNOWN || !ra || - (!ra[ssa_op->op2_def] && !ssa->vars[ssa_op->op2_def].no_val))); + (!ra[ssa_op->op2_def] /*&& !ssa->vars[ssa_op->op2_def].no_val*/))); if (type != IS_UNKNOWN) { ssa->var_info[ssa_op->op2_def].type &= ~MAY_BE_GUARD; if (ra && ra[ssa_op->op2_def]) { diff --git a/ext/opcache/tests/jit/assign_054.phpt b/ext/opcache/tests/jit/assign_054.phpt new file mode 100644 index 00000000000..a4c4706b7ce --- /dev/null +++ b/ext/opcache/tests/jit/assign_054.phpt @@ -0,0 +1,24 @@ +--TEST-- +JIT ASSIGN: missing type store +--INI-- +opcache.enable=1 +opcache.enable_cli=1 +opcache.file_update_protection=0 +opcache.jit_buffer_size=1M +opcache.protect_memory=1 +--FILE-- + +DONE +--EXPECT-- +DONE