]> git.ipfire.org Git - thirdparty/suricata.git/commitdiff
dcerpc: use wrappingadd for padding parsing
authorPhilippe Antoine <contact@catenacyber.fr>
Sat, 2 Apr 2022 19:41:56 +0000 (21:41 +0200)
committerVictor Julien <vjulien@oisf.net>
Sat, 30 Apr 2022 05:57:01 +0000 (07:57 +0200)
As we compute a modulo, we can safely wrap around even if there
is an overflow

Ticket: #5301

rust/src/dcerpc/parser.rs

index 2ff42886921849e947fc3ad17f13f48131c33216..befefe38c212e040a7a9475b927a872d4fafd2fc 100644 (file)
@@ -154,7 +154,7 @@ pub fn parse_dcerpc_bindack(i: &[u8]) -> IResult<&[u8], DCERPCBindAck> {
     let (i, _assoc_group) = take(4_usize)(i)?;
     let (i, sec_addr_len) = le_u16(i)?;
     let (i, _) = take(sec_addr_len)(i)?;
-    let (i, _) = cond((sec_addr_len + 2) % 4 != 0, |b| take(4 - (sec_addr_len + 2) % 4)(b))(i)?;
+    let (i, _) = cond((sec_addr_len.wrapping_add(2)) % 4 != 0, |b| take(4 - (sec_addr_len.wrapping_add(2)) % 4)(b))(i)?;
     let (i, numctxitems) = le_u8(i)?;
     let (i, _) = take(3_usize)(i)?; // Padding
     let (i, ctxitems) = count(parse_dcerpc_bindack_result, numctxitems as usize)(i)?;