From e157a844180ca96bd26e392e8aa661af45da44ef Mon Sep 17 00:00:00 2001 From: "Yukihiro \"Matz\" Matsumoto" Date: Sat, 9 Jul 2022 17:27:27 +0900 Subject: [PATCH] bigint.c (mpz_init_set_int): should avoid integer overflow. Check MRB_INT_MIN which could overflow by negation. --- mrbgems/mruby-bigint/core/bigint.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/mrbgems/mruby-bigint/core/bigint.c b/mrbgems/mruby-bigint/core/bigint.c index 49ea13a8c..db00ea858 100644 --- a/mrbgems/mruby-bigint/core/bigint.c +++ b/mrbgems/mruby-bigint/core/bigint.c @@ -66,7 +66,8 @@ mpz_init_set_int(mrb_state *mrb, mpz_t *y, mrb_int v) y->p = (mp_limb*)mrb_malloc(mrb, sizeof(mp_limb)*2); if (v < 0) { y->sn = -1; - u = -v; + if (v == MRB_INT_MIN) u = v; + else u = -v; } else if (v > 0) { y->sn = 1;