From cdbae736f15fe527b93722bb57e489a422be3bee Mon Sep 17 00:00:00 2001 From: Michael Gehring Date: Wed, 25 Nov 2015 09:50:37 +0100 Subject: [PATCH] sum: use wrapping_add to avoid overflow panics --- src/sum/sum.rs | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/sum/sum.rs b/src/sum/sum.rs index 1febb2446..49b131e2c 100644 --- a/src/sum/sum.rs +++ b/src/sum/sum.rs @@ -32,7 +32,7 @@ fn bsd_sum(mut reader: Box) -> (usize, u16) { blocks_read += 1; for &byte in buf[..n].iter() { checksum = (checksum >> 1) + ((checksum & 1) << 15); - checksum += byte as u16; + checksum = checksum.wrapping_add(byte as u16); } }, _ => break, @@ -45,14 +45,14 @@ fn bsd_sum(mut reader: Box) -> (usize, u16) { fn sysv_sum(mut reader: Box) -> (usize, u16) { let mut buf = [0; 512]; let mut blocks_read = 0; - let mut ret = 0; + let mut ret = 0u32; loop { match reader.read(&mut buf) { Ok(n) if n != 0 => { blocks_read += 1; for &byte in buf[..n].iter() { - ret += byte as u32; + ret = ret.wrapping_add(byte as u32); } }, _ => break,