From 9695573914ad96f234ecabf9ecee2dbb3a6a36ed Mon Sep 17 00:00:00 2001 From: Jack Lloyd Date: Wed, 6 Nov 2019 06:46:27 -0500 Subject: [PATCH] Fix an overflow in Streebog causing panic or incorrect output (#91) --- streebog/src/streebog.rs | 8 +++----- 1 file changed, 3 insertions(+), 5 deletions(-) diff --git a/streebog/src/streebog.rs b/streebog/src/streebog.rs index 8660d58a5..ae02c67bc 100644 --- a/streebog/src/streebog.rs +++ b/streebog/src/streebog.rs @@ -61,12 +61,10 @@ impl StreebogState { } fn update_sigma(&mut self, m: &Block) { - let mut over = false; + let mut carry = 0; for (a, b) in self.sigma.iter_mut().zip(m.iter()) { - let (res, loc_over) = (*a).overflowing_add(*b); - *a = res; - if over { *a += 1; } - over = loc_over; + carry = (*a as u16) + (*b as u16) + (carry >> 8); + *a = (carry & 0xFF) as u8; } }