summaryrefslogtreecommitdiffhomepage
path: root/src/array.c
diff options
context:
space:
mode:
authorYukihiro "Matz" Matsumoto <[email protected]>2017-08-05 01:18:52 +0900
committerYukihiro "Matz" Matsumoto <[email protected]>2017-08-05 01:18:52 +0900
commit006661394d792e179575e79ae159d604c612950b (patch)
tree7cc21e07763bd9bebed199817a17717d6d0d7a64 /src/array.c
parent36dbfd9bda18c2dbafcf58b524b80f4318a3b677 (diff)
downloadmruby-006661394d792e179575e79ae159d604c612950b.tar.gz
mruby-006661394d792e179575e79ae159d604c612950b.zip
Fixed heap buffer overflow in `mrb_ary_unshift_m`; fix #3760
Diffstat (limited to 'src/array.c')
-rw-r--r--src/array.c4
1 files changed, 2 insertions, 2 deletions
diff --git a/src/array.c b/src/array.c
index 9124ff950..2ef29dcf5 100644
--- a/src/array.c
+++ b/src/array.c
@@ -584,8 +584,8 @@ mrb_ary_unshift_m(mrb_state *mrb, mrb_value self)
}
array_copy(ptr, vals, alen);
ARY_SET_LEN(a, len+alen);
- while (len--) {
- mrb_field_write_barrier_value(mrb, (struct RBasic*)a, vals[len]);
+ while (alen--) {
+ mrb_field_write_barrier_value(mrb, (struct RBasic*)a, vals[alen]);
}
return self;