Skip to content

Commit cb7059f

Browse files
committed
Safer check for function name. The previous check is incorrect in ZTS build.
1 parent 7280aba commit cb7059f

File tree

1 file changed

+4
-5
lines changed

1 file changed

+4
-5
lines changed

ext/opcache/Optimizer/dfa_pass.c

Lines changed: 4 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -338,13 +338,12 @@ int zend_dfa_optimize_calls(zend_op_array *op_array, zend_ssa *ssa)
338338

339339
if (func_info->callee_info) {
340340
zend_call_info *call_info = func_info->callee_info;
341-
static zend_function *in_array_function = NULL;
342341

343-
if (!in_array_function) {
344-
in_array_function = zend_hash_str_find_ptr(CG(function_table), "in_array", sizeof("in_array")-1);
345-
}
346342
do {
347-
if (call_info->callee_func == in_array_function
343+
if (call_info->caller_call_opline->opcode == ZEND_DO_ICALL
344+
&& call_info->callee_func
345+
&& ZSTR_LEN(call_info->callee_func->common.function_name) == sizeof("in_array")-1
346+
&& memcmp(ZSTR_VAL(call_info->callee_func->common.function_name), "in_array", sizeof("in_array")-1) == 0
348347
&& (call_info->caller_init_opline->extended_value == 2
349348
|| (call_info->caller_init_opline->extended_value == 3
350349
&& (call_info->caller_call_opline - 1)->opcode == ZEND_SEND_VAL

0 commit comments

Comments
 (0)