From 84c807f10cc4350e5e6b324f4323e0b36b7ef7c8 Mon Sep 17 00:00:00 2001 From: lihuan Date: Wed, 4 Mar 2026 15:29:15 +0800 Subject: [PATCH] fix UB in when multiplying by zero --- src/core/size_value.rs | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/src/core/size_value.rs b/src/core/size_value.rs index 8ae0e03..de3bdfe 100644 --- a/src/core/size_value.rs +++ b/src/core/size_value.rs @@ -30,10 +30,7 @@ impl SizeValue { pub const fn mul(self, rhs: u64) -> Self { match self.get().checked_mul(rhs) { None => panic!("Overflow occurred while multiplying size values!"), - Some(val) => { - // SAFETY: This is safe since we checked for overflow - Self(unsafe { NonZeroU64::new_unchecked(val) }) - } + Some(val) => Self::new(val), } } } @@ -64,6 +61,12 @@ mod test { SizeValue::new(8).mul(u64::MAX); } + #[test] + #[should_panic] + fn mul_zero_panic() { + SizeValue::new(8).mul(0); + } + #[test] fn derived_traits() { let size = SizeValue::new(8);