From 45f94ad5cb7106fd6bbc39d60f281911188880ac Mon Sep 17 00:00:00 2001 From: Ryan Goodfellow Date: Thu, 15 Jan 2026 19:09:33 +0000 Subject: [PATCH] use overflowing add in bvec checksum prevents debug assersions on overflow --- lang/p4rs/src/checksum.rs | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/lang/p4rs/src/checksum.rs b/lang/p4rs/src/checksum.rs index 7b8e9ad2..81970400 100644 --- a/lang/p4rs/src/checksum.rs +++ b/lang/p4rs/src/checksum.rs @@ -86,7 +86,12 @@ fn bvec_csum(bv: &BitVec) -> BitVec { let buf = x.to_be_bytes(); let mut c: u16 = 0; for i in (0..16).step_by(2) { - c += u16::from_be_bytes([buf[i], buf[i + 1]]) + let (mut result, overflow) = + c.overflowing_add(u16::from_be_bytes([buf[i], buf[i + 1]])); + if overflow { + result += 1; + } + c = result; } let c = !c; let mut result = bitvec![u8, Msb0; 0u8, 16];