summaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorYukihiro "Matz" Matsumoto <[email protected]>2018-04-28 10:08:20 +0900
committerGitHub <[email protected]>2018-04-28 10:08:20 +0900
commitb956c0f43c1ae92b6cec6bcb4a25bf9f2be33136 (patch)
treeef866dc1420e1a0b9e82a628efc0f9d10e4e88c5
parent1b261382a03ac6c5a37a229544253adda80ceeaf (diff)
parentb8869498b7b1458af1cf2a5ccc7644849f826230 (diff)
downloadmruby-b956c0f43c1ae92b6cec6bcb4a25bf9f2be33136.tar.gz
mruby-b956c0f43c1ae92b6cec6bcb4a25bf9f2be33136.zip
Merge pull request #4012 from take-cheeze/fix_heap_use_after_free
Fix heap use after free on mruby-aws-sigv4.
-rw-r--r--src/vm.c2
1 files changed, 2 insertions, 0 deletions
diff --git a/src/vm.c b/src/vm.c
index 9e43d0a4e..429cc2648 100644
--- a/src/vm.c
+++ b/src/vm.c
@@ -527,6 +527,8 @@ mrb_exec_irep(mrb_state *mrb, mrb_value self, struct RProc *p)
return MRB_PROC_CFUNC(p)(mrb, self);
}
ci->nregs = p->body.irep->nregs;
+ ci->env = MRB_PROC_ENV(p);
+ if (ci->env) ci->env->stack[0] = self;
if (ci->argc < 0) keep = 3;
else keep = ci->argc + 2;
if (ci->nregs < keep) {