diff options
| author | Yukihiro "Matz" Matsumoto <[email protected]> | 2021-03-24 13:28:01 +0900 |
|---|---|---|
| committer | Yukihiro "Matz" Matsumoto <[email protected]> | 2021-03-24 13:28:01 +0900 |
| commit | 092bba64e7694d046299795faa89ec26c033052a (patch) | |
| tree | b4128dcb524f560e92876cab7270208c84c76658 | |
| parent | 49f75703ccef5271d3835501316408ef244cef27 (diff) | |
| download | mruby-092bba64e7694d046299795faa89ec26c033052a.tar.gz mruby-092bba64e7694d046299795faa89ec26c033052a.zip | |
rational.c: check integer overflow in `rational_minus`.
| -rw-r--r-- | mrbgems/mruby-rational/src/rational.c | 4 |
1 files changed, 3 insertions, 1 deletions
diff --git a/mrbgems/mruby-rational/src/rational.c b/mrbgems/mruby-rational/src/rational.c index be9b5eaf9..1577a7045 100644 --- a/mrbgems/mruby-rational/src/rational.c +++ b/mrbgems/mruby-rational/src/rational.c @@ -403,7 +403,9 @@ static mrb_value rational_minus(mrb_state *mrb, mrb_value x) { struct mrb_rational *p = rational_ptr(mrb, x); - return rational_new(mrb, -p->numerator, p->denominator); + mrb_int n = p->numerator; + if (n == MRB_INT_MIN) rat_overflow(mrb); + return rational_new(mrb, -n, p->denominator); } mrb_int mrb_num_div_int(mrb_state*, mrb_int, mrb_int); |
