From 3b40a2f6b56d9c81b7673cc50121a56ebf7dc8bd Mon Sep 17 00:00:00 2001 From: "Yukihiro \"Matz\" Matsumoto" Date: Sat, 4 Mar 2017 18:55:19 +0900 Subject: Limit ecall() recursion levels; fix #3466 --- src/vm.c | 3 +++ 1 file changed, 3 insertions(+) (limited to 'src') diff --git a/src/vm.c b/src/vm.c index 251ee15bc..012499610 100644 --- a/src/vm.c +++ b/src/vm.c @@ -292,6 +292,9 @@ ecall(mrb_state *mrb, int i) ptrdiff_t nstk; if (i<0) return; + if (mrb->c->ci - mrb->c->cibase > MRB_FUNCALL_DEPTH_MAX) { + mrb_exc_raise(mrb, mrb_obj_value(mrb->stack_err)); + } p = mrb->c->ensure[i]; if (!p) return; if (mrb->c->ci->eidx > i) -- cgit v1.2.3