From d2e623e22ab3a729f415d1aa4c6a5b0814f5d772 Mon Sep 17 00:00:00 2001 From: boquan-fang Date: Tue, 12 May 2026 23:58:33 +0000 Subject: [PATCH] fix(s2n-quic-core): enforce checked arithmetics to prevent overflows --- quic/s2n-quic-core/src/varint/mod.rs | 60 +++++++--------------------- 1 file changed, 14 insertions(+), 46 deletions(-) diff --git a/quic/s2n-quic-core/src/varint/mod.rs b/quic/s2n-quic-core/src/varint/mod.rs index 6279191d91..22ad2aa96a 100644 --- a/quic/s2n-quic-core/src/varint/mod.rs +++ b/quic/s2n-quic-core/src/varint/mod.rs @@ -334,11 +334,7 @@ impl core::ops::Add for VarInt { #[inline] #[track_caller] fn add(self, rhs: Self) -> Self { - if cfg!(debug_assertions) { - self.checked_add(rhs).expect("VarInt overflow occurred") - } else { - Self(self.0 + rhs.0) - } + self.checked_add(rhs).expect("VarInt overflow occurred") } } @@ -348,12 +344,8 @@ impl core::ops::Add for VarInt { #[inline] #[track_caller] fn add(self, rhs: usize) -> Self { - if cfg!(debug_assertions) { - self.checked_add(VarInt::new(rhs as u64).expect("VarInt overflow occurred")) - .expect("VarInt overflow occurred") - } else { - Self(self.0 + rhs as u64) - } + self.checked_add(VarInt::new(rhs as u64).expect("VarInt overflow occurred")) + .expect("VarInt overflow occurred") } } @@ -361,11 +353,7 @@ impl core::ops::AddAssign for VarInt { #[inline] #[track_caller] fn add_assign(&mut self, rhs: Self) { - if cfg!(debug_assertions) { - *self = self.checked_add(rhs).expect("VarInt overflow occurred") - } else { - self.0 += rhs.0 - } + *self = self.checked_add(rhs).expect("VarInt overflow occurred") } } @@ -373,13 +361,9 @@ impl core::ops::AddAssign for VarInt { #[inline] #[track_caller] fn add_assign(&mut self, rhs: usize) { - if cfg!(debug_assertions) { - *self = self - .checked_add(VarInt::new(rhs as u64).expect("VarInt overflow occurred")) - .expect("VarInt overflow occurred") - } else { - self.0 += rhs as u64 - } + *self = self + .checked_add(VarInt::new(rhs as u64).expect("VarInt overflow occurred")) + .expect("VarInt overflow occurred") } } @@ -429,11 +413,7 @@ impl core::ops::Mul for VarInt { #[inline] #[track_caller] fn mul(self, rhs: Self) -> Self { - if cfg!(debug_assertions) { - self.checked_mul(rhs).expect("VarInt overflow occurred") - } else { - Self(self.0 * rhs.0) - } + self.checked_mul(rhs).expect("VarInt overflow occurred") } } @@ -443,12 +423,8 @@ impl core::ops::Mul for VarInt { #[inline] #[track_caller] fn mul(self, rhs: usize) -> Self { - if cfg!(debug_assertions) { - self.checked_mul(VarInt::new(rhs as u64).expect("VarInt overflow occurred")) - .expect("VarInt overflow occurred") - } else { - Self(self.0 * rhs as u64) - } + self.checked_mul(VarInt::new(rhs as u64).expect("VarInt overflow occurred")) + .expect("VarInt overflow occurred") } } @@ -456,11 +432,7 @@ impl core::ops::MulAssign for VarInt { #[inline] #[track_caller] fn mul_assign(&mut self, rhs: Self) { - if cfg!(debug_assertions) { - *self = self.checked_mul(rhs).expect("VarInt overflow occurred") - } else { - self.0 *= rhs.0 - } + *self = self.checked_mul(rhs).expect("VarInt overflow occurred") } } @@ -468,13 +440,9 @@ impl core::ops::MulAssign for VarInt { #[inline] #[track_caller] fn mul_assign(&mut self, rhs: usize) { - if cfg!(debug_assertions) { - *self = self - .checked_mul(VarInt::new(rhs as u64).expect("VarInt overflow occurred")) - .expect("VarInt overflow occurred") - } else { - self.0 *= rhs as u64 - } + *self = self + .checked_mul(VarInt::new(rhs as u64).expect("VarInt overflow occurred")) + .expect("VarInt overflow occurred") } }