From 64e5208404d37326c071506d861b8bd9776218df Mon Sep 17 00:00:00 2001 From: Christopher Aue Date: Tue, 22 Aug 2017 11:24:46 +0200 Subject: Asserted bidx < ci->nregs for OP_SEND and OP_SUPER --- src/vm.c | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) (limited to 'src') diff --git a/src/vm.c b/src/vm.c index 715c3db6b..ba320d962 100644 --- a/src/vm.c +++ b/src/vm.c @@ -1333,10 +1333,12 @@ RETRY_TRY_BLOCK: int bidx = (argc < 0) ? a+2 : a+n+1; struct RProc *m; struct RClass *c; - mrb_callinfo *ci; + mrb_callinfo *ci = mrb->c->ci; mrb_value recv, blk; mrb_sym mid = syms[GETARG_B(i)]; + mrb_assert(bidx < ci->nregs); + recv = regs[a]; if (GET_OPCODE(i) != OP_SENDB) { SET_NIL_VALUE(regs[bidx]); @@ -1523,6 +1525,8 @@ RETRY_TRY_BLOCK: mrb_value recv, blk; mrb_sym mid = ci->mid; + mrb_assert(bidx < ci->nregs); + if (mid == 0 || !ci->target_class) { mrb_value exc = mrb_exc_new_str_lit(mrb, E_NOMETHOD_ERROR, "super called outside of method"); mrb_exc_set(mrb, exc); -- cgit v1.2.3