summaryrefslogtreecommitdiffhomepage
path: root/src/array.c
diff options
context:
space:
mode:
authorYukihiro "Matz" Matsumoto <[email protected]>2017-01-07 12:24:56 +0900
committerYukihiro "Matz" Matsumoto <[email protected]>2017-01-07 12:26:29 +0900
commit392d7fbef9aa64134b33ac562f125df45b450ec0 (patch)
treee21f628b2c6006fde1a89d241a57c4918f133d5e /src/array.c
parent8c11b04d5c5961c28af44221c91a57a87d03076e (diff)
downloadmruby-392d7fbef9aa64134b33ac562f125df45b450ec0.tar.gz
mruby-392d7fbef9aa64134b33ac562f125df45b450ec0.zip
Add ary_modify() checks; close #3379
This issue was reported by https://hackerone.com/an0n-j
Diffstat (limited to 'src/array.c')
-rw-r--r--src/array.c3
1 files changed, 3 insertions, 0 deletions
diff --git a/src/array.c b/src/array.c
index 420907866..99f9fc8b2 100644
--- a/src/array.c
+++ b/src/array.c
@@ -440,6 +440,7 @@ mrb_ary_pop(mrb_state *mrb, mrb_value ary)
{
struct RArray *a = mrb_ary_ptr(ary);
+ ary_modify(mrb, a);
if (a->len == 0) return mrb_nil_value();
return a->ptr[--a->len];
}
@@ -452,6 +453,7 @@ mrb_ary_shift(mrb_state *mrb, mrb_value self)
struct RArray *a = mrb_ary_ptr(self);
mrb_value val;
+ ary_modify(mrb, a);
if (a->len == 0) return mrb_nil_value();
if (ARY_SHARED_P(a)) {
L_SHIFT:
@@ -964,6 +966,7 @@ mrb_ary_clear(mrb_state *mrb, mrb_value self)
{
struct RArray *a = mrb_ary_ptr(self);
+ ary_modify(mrb, a);
if (ARY_SHARED_P(a)) {
mrb_ary_decref(mrb, a->aux.shared);
ARY_UNSET_SHARED_FLAG(a);