diff options
Diffstat (limited to 'strings/decimal.c')
-rw-r--r-- | strings/decimal.c | 6 |
1 files changed, 5 insertions, 1 deletions
diff --git a/strings/decimal.c b/strings/decimal.c index ce00b9770b3..f536bdb1d6b 100644 --- a/strings/decimal.c +++ b/strings/decimal.c @@ -1986,7 +1986,11 @@ int decimal_mul(decimal_t *from1, decimal_t *from2, decimal_t *to) carry+=hi; } for (; carry; buf0--) + { + if (buf0 < to->buf) + return E_DEC_OVERFLOW; ADD(*buf0, *buf0, 0, carry); + } } /* Now we have to check for -0.000 case */ @@ -2018,7 +2022,7 @@ int decimal_mul(decimal_t *from1, decimal_t *from2, decimal_t *to) if (to->buf < buf1) { dec1 *cur_d= to->buf; - for (; d_to_move; d_to_move--, cur_d++, buf1++) + for (; d_to_move--; cur_d++, buf1++) *cur_d= *buf1; } return error; |