diff options
| author | Bouke van der Bijl <[email protected]> | 2016-11-29 10:54:21 -0500 |
|---|---|---|
| committer | Bouke van der Bijl <[email protected]> | 2016-12-01 15:23:31 -0500 |
| commit | 7d07466b437910d560fda2f78d2f7b93205eaa22 (patch) | |
| tree | bb18500df0dddad6a37af11e4872236b26def189 /src | |
| parent | 2cca9d368815e9c83a7489c40d69937d68cb43a2 (diff) | |
| download | mruby-7d07466b437910d560fda2f78d2f7b93205eaa22.tar.gz mruby-7d07466b437910d560fda2f78d2f7b93205eaa22.zip | |
Fix stack move segfaulting in OP_ARYCAT
Reported by https://hackerone.com/haquaman
Testcase (couldn't get it to work as a test):
def nil.b
b *nil
end
nil.b
Diffstat (limited to 'src')
| -rw-r--r-- | src/vm.c | 4 |
1 files changed, 2 insertions, 2 deletions
@@ -2134,8 +2134,8 @@ RETRY_TRY_BLOCK: CASE(OP_ARYCAT) { /* A B mrb_ary_concat(R(A),R(B)) */ - mrb_ary_concat(mrb, regs[GETARG_A(i)], - mrb_ary_splat(mrb, regs[GETARG_B(i)])); + mrb_value splat = mrb_ary_splat(mrb, regs[GETARG_B(i)]); + mrb_ary_concat(mrb, regs[GETARG_A(i)], splat); ARENA_RESTORE(mrb, ai); NEXT; } |
