Skip to content

Commit 3dde6fc

Browse files
committed
Fix extra args leak
1 parent 8fef83d commit 3dde6fc

File tree

2 files changed

+10
-0
lines changed

2 files changed

+10
-0
lines changed

ext/opcache/jit/zend_jit_internal.h

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -427,6 +427,9 @@ struct _zend_jit_trace_stack_frame {
427427
#define TRACE_FRAME_NO_NEED_REKEASE_THIS(frame) \
428428
((frame)->_info & TRACE_FRAME_MASK_NO_NEED_RELEASE_THIS)
429429

430+
#define TRACE_FRAME_SET_UNKNOWM_NUM_ARGS(frame) do { \
431+
(frame)->_info |= (0xffff << TRACE_FRAME_SHIFT_NUM_ARGS); \
432+
} while (0)
430433
#define TRACE_FRAME_SET_RETURN_SSA_VAR(frame, var) do { \
431434
(frame)->_info = var; \
432435
} while (0)

ext/opcache/jit/zend_jit_trace.c

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5091,6 +5091,13 @@ static const void *zend_jit_trace(zend_jit_trace_rec *trace_buffer, uint32_t par
50915091
}
50925092
}
50935093
goto done;
5094+
case ZEND_SEND_ARRAY:
5095+
case ZEND_SEND_UNPACK:
5096+
if (JIT_G(current_frame)
5097+
&& JIT_G(current_frame)->call) {
5098+
TRACE_FRAME_SET_UNKNOWM_NUM_ARGS(JIT_G(current_frame)->call);
5099+
}
5100+
break;
50945101
default:
50955102
break;
50965103
}

0 commit comments

Comments
 (0)