Limit ecall() recursion levels; fix #3466

This commit is contained in:
Yukihiro "Matz" Matsumoto
2017-03-04 18:55:19 +09:00
parent ecee8c51b0
commit 3b40a2f6b5
+3
View File
@@ -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)