diff --git a/src/util/decimal.rs b/src/util/decimal.rs index 6762517..ab308eb 100644 --- a/src/util/decimal.rs +++ b/src/util/decimal.rs @@ -156,7 +156,12 @@ impl Decimal { } } } - if past_dec { exponent += 1; } + if past_dec { + exponent += 1; + if exponent > 18 { + return Err(ParseDecimalError::TooBig); + } + } } b'.' => { past_dec = true; } _ => { /* whitespace or something, just ignore it */ } @@ -314,7 +319,12 @@ impl UDecimal { } } } - if past_dec { exponent += 1; } + if past_dec { + exponent += 1; + if exponent > 18 { + return Err(ParseDecimalError::TooBig); + } + } } b'.' => { past_dec = true; } _ => { /* whitespace or something, just ignore it */ }