summaryrefslogtreecommitdiffhomepage
path: root/mrbgems/mruby-eval
diff options
context:
space:
mode:
authorYukihiro "Matz" Matsumoto <[email protected]>2017-06-19 22:00:16 +0900
committerYukihiro "Matz" Matsumoto <[email protected]>2017-06-19 22:00:16 +0900
commit0de7eec628d5751ae4ca99c3f10f6f31bf3d985c (patch)
treeb14229a3699aa69f2369858df0ed75adbcfbb44b /mrbgems/mruby-eval
parent4d3027b08eb0b8b17db3c70ea2029bdd5b9193c8 (diff)
downloadmruby-0de7eec628d5751ae4ca99c3f10f6f31bf3d985c.tar.gz
mruby-0de7eec628d5751ae4ca99c3f10f6f31bf3d985c.zip
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.
Diffstat (limited to 'mrbgems/mruby-eval')
-rw-r--r--mrbgems/mruby-eval/src/eval.c4
1 files changed, 2 insertions, 2 deletions
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;