From 5abb283dd7323e63b12ea14cc98b35f77ba771e7 Mon Sep 17 00:00:00 2001 From: "Yukihiro \"Matz\" Matsumoto" Date: Tue, 17 Nov 2020 22:40:02 +0900 Subject: Check division overflow (`MRB_INT_MIN` and `-1`). --- mrbgems/mruby-rational/src/rational.c | 3 +++ 1 file changed, 3 insertions(+) diff --git a/mrbgems/mruby-rational/src/rational.c b/mrbgems/mruby-rational/src/rational.c index a35f2f023..85b1dff07 100644 --- a/mrbgems/mruby-rational/src/rational.c +++ b/mrbgems/mruby-rational/src/rational.c @@ -236,6 +236,9 @@ rational_m_int(mrb_state *mrb, mrb_int n, mrb_int d) b = a % b; a = tmp; } + if ((n == MRB_INT_MIN || d == MRB_INT_MIN) && a == -1) { + mrb_raise(mrb, E_RANGE_ERROR, "integer overflow in rational"); + } return rational_new(mrb, n/a, d/a); } -- cgit v1.2.3