From 7178a5e7d3056407448006ae86d81b88f16bb489 Mon Sep 17 00:00:00 2001 From: KOBAYASHI Shuji Date: Mon, 26 Aug 2019 20:23:46 +0900 Subject: Fix `Array#sample` with `MRB_INT32` Array index became potentially negative because `uint32_t` is cast to `mrb_int`. --- mrbgems/mruby-random/src/random.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/mrbgems/mruby-random/src/random.c b/mrbgems/mruby-random/src/random.c index a970e65a3..15f96934a 100644 --- a/mrbgems/mruby-random/src/random.c +++ b/mrbgems/mruby-random/src/random.c @@ -70,7 +70,7 @@ rand_uint32(rand_state *state) uint32_t x = seed[0]; uint32_t y = seed[1]; uint32_t z = seed[2]; - uint32_t w = seed[3]; + uint32_t w = seed[3]; uint32_t t; t = x ^ (x << 11); @@ -317,7 +317,7 @@ mrb_ary_sample(mrb_state *mrb, mrb_value ary) for (;;) { retry: - r = (mrb_int)rand_uint32(random) % len; + r = (mrb_int)(rand_uint32(random) % len); for (j=0; j