diff options
| author | Yukihiro "Matz" Matsumoto <[email protected]> | 2017-05-25 14:12:16 +0900 |
|---|---|---|
| committer | Yukihiro "Matz" Matsumoto <[email protected]> | 2017-05-25 14:12:16 +0900 |
| commit | e0931126ffcfd13af42c0a7ce4a37cc73f4223da (patch) | |
| tree | b01196d9e2a7d341ad38e7e4e35a129235c7b15e /src | |
| parent | e969229b77b9c3b1f6ff4de7d9ce6d15586a9c15 (diff) | |
| download | mruby-e0931126ffcfd13af42c0a7ce4a37cc73f4223da.tar.gz mruby-e0931126ffcfd13af42c0a7ce4a37cc73f4223da.zip | |
Check env stack length before `OP_SETUPVAR`; ref #3643
Diffstat (limited to 'src')
| -rw-r--r-- | src/vm.c | 7 |
1 files changed, 5 insertions, 2 deletions
@@ -1084,8 +1084,11 @@ RETRY_TRY_BLOCK: if (e) { mrb_value *regs_a = regs + GETARG_A(i); int idx = GETARG_B(i); - e->stack[idx] = *regs_a; - mrb_write_barrier(mrb, (struct RBasic*)e); + + if (idx < MRB_ENV_STACK_LEN(e)) { + e->stack[idx] = *regs_a; + mrb_write_barrier(mrb, (struct RBasic*)e); + } } NEXT; } |
