From 0de7eec628d5751ae4ca99c3f10f6f31bf3d985c Mon Sep 17 00:00:00 2001 From: "Yukihiro \"Matz\" Matsumoto" Date: Mon, 19 Jun 2017 22:00:16 +0900 Subject: Fixed disclosure of local variables by `eval`; ref #3710 This patch fixes the latter part of #3710. We need to change `struct REnv` to fix the former part of the issue. --- mrbgems/mruby-eval/src/eval.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'mrbgems/mruby-eval/src') diff --git a/mrbgems/mruby-eval/src/eval.c b/mrbgems/mruby-eval/src/eval.c index 537e8541e..9610b8bc2 100644 --- a/mrbgems/mruby-eval/src/eval.c +++ b/mrbgems/mruby-eval/src/eval.c @@ -205,9 +205,9 @@ create_proc_from_string(mrb_state *mrb, char *s, int len, mrb_value binding, con if (!e) e = c->ci[-1].env; e = (struct REnv*)mrb_obj_alloc(mrb, MRB_TT_ENV, (struct RClass*)e); e->cxt.c = c; - e->cioff = c->ci - c->cibase - 1; + e->cioff = c->ci - c->cibase; e->stack = c->ci->stackent; - MRB_SET_ENV_STACK_LEN(e, c->ci[-1].proc->body.irep->nlocals); + MRB_SET_ENV_STACK_LEN(e, c->ci->proc->body.irep->nlocals); c->ci->target_class = proc->target_class; c->ci->env = 0; proc->env = e; -- cgit v1.2.3