From 392d7fbef9aa64134b33ac562f125df45b450ec0 Mon Sep 17 00:00:00 2001 From: "Yukihiro \"Matz\" Matsumoto" Date: Sat, 7 Jan 2017 12:24:56 +0900 Subject: Add ary_modify() checks; close #3379 This issue was reported by https://hackerone.com/an0n-j --- src/array.c | 3 +++ 1 file changed, 3 insertions(+) (limited to 'src/array.c') 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); -- cgit v1.2.3