summaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorYukihiro "Matz" Matsumoto <[email protected]>2020-09-07 16:22:01 +0900
committerYukihiro "Matz" Matsumoto <[email protected]>2020-10-12 18:20:22 +0900
commit3ff2757bf705082e40013796ef2bac1277499de8 (patch)
tree35765477da5408a63198c8d1fa9b651b0b1e8bfd
parent4dcc1819c9a5d2ad8c786dd4c7443c048c639575 (diff)
downloadmruby-3ff2757bf705082e40013796ef2bac1277499de8.tar.gz
mruby-3ff2757bf705082e40013796ef2bac1277499de8.zip
Fix `mrb_int_mul_overflow()` to check either operand being zero.
-rw-r--r--include/mruby/numeric.h6
-rw-r--r--mrbgems/mruby-sprintf/src/sprintf.c4
2 files changed, 5 insertions, 5 deletions
diff --git a/include/mruby/numeric.h b/include/mruby/numeric.h
index f88868796..7e70b9dee 100644
--- a/include/mruby/numeric.h
+++ b/include/mruby/numeric.h
@@ -136,15 +136,15 @@ mrb_int_mul_overflow(mrb_int multiplier, mrb_int multiplicand, mrb_int *product)
if (multiplicand > 0) {
if (multiplier > MRB_INT_MAX / multiplicand) return TRUE;
}
- else {
+ else if (multiplicand < 0) {
if (multiplicand < MRB_INT_MAX / multiplier) return TRUE;
}
}
- else {
+ else if (multiplier < 0) {
if (multiplicand > 0) {
if (multiplier < MRB_INT_MAX / multiplicand) return TRUE;
}
- else {
+ else if (multiplicand < 0) {
if (multiplier != 0 && multiplicand < MRB_INT_MAX / multiplier) return TRUE;
}
}
diff --git a/mrbgems/mruby-sprintf/src/sprintf.c b/mrbgems/mruby-sprintf/src/sprintf.c
index 144fe88c6..3ecf11afb 100644
--- a/mrbgems/mruby-sprintf/src/sprintf.c
+++ b/mrbgems/mruby-sprintf/src/sprintf.c
@@ -1082,7 +1082,7 @@ retry:
need = width;
if (need < 0) {
- mrb_raise(mrb, E_ARGUMENT_ERROR, "width too big 2");
+ mrb_raise(mrb, E_ARGUMENT_ERROR, "width too big");
}
FILL(' ', need);
if (flags & FMINUS) {
@@ -1108,7 +1108,7 @@ retry:
if (need > MRB_INT_MAX - ((flags&FPREC) ? prec : 6)) {
too_big_width:
mrb_raise(mrb, E_ARGUMENT_ERROR,
- (width > prec ? "width too big 3" : "prec too big"));
+ (width > prec ? "width too big" : "prec too big"));
}
need += (flags&FPREC) ? prec : 6;
if ((flags&FWIDTH) && need < width)