about summary refs log tree commit diff
path: root/src/libserialize
diff options
context:
space:
mode:
authorFelix S. Klock II <pnkfelix@pnkfx.org>2015-02-19 19:21:53 +0100
committerFelix S. Klock II <pnkfelix@pnkfx.org>2015-03-03 12:10:57 +0100
commit7c8edabac8030889f4a885b944c86190772953fd (patch)
tree8e380ac4f72260108ed89c1738645b6a43e220d4 /src/libserialize
parentc8db89aa82573b89481fde598da6e54371f266cb (diff)
downloadrust-7c8edabac8030889f4a885b944c86190772953fd.tar.gz
rust-7c8edabac8030889f4a885b944c86190772953fd.zip
Accommodate arith-overflow in serialize::json numeric parsing.
Diffstat (limited to 'src/libserialize')
-rw-r--r--src/libserialize/json.rs4
1 files changed, 2 insertions, 2 deletions
diff --git a/src/libserialize/json.rs b/src/libserialize/json.rs
index 14930f91c91..bf4d006fcfa 100644
--- a/src/libserialize/json.rs
+++ b/src/libserialize/json.rs
@@ -1569,8 +1569,8 @@ impl<T: Iterator<Item=char>> Parser<T> {
                 while !self.eof() {
                     match self.ch_or_null() {
                         c @ '0' ... '9' => {
-                            accum *= 10;
-                            accum += (c as u64) - ('0' as u64);
+                            accum = accum.wrapping_mul(10);
+                            accum = accum.wrapping_add((c as u64) - ('0' as u64));
 
                             // Detect overflow by comparing to the last value.
                             if accum <= last_accum { return self.error(InvalidNumber); }