From b5131da3552d5634f0514426fd2b364e9a46fae7 Mon Sep 17 00:00:00 2001 From: Philippe Antoine Date: Sat, 2 Apr 2022 21:16:53 +0200 Subject: [PATCH] dcerpc: store consumed_bytes as i32 As it can grow bigger than u16 (cherry picked from commit 704bc878ea3f2fcb911d38b6a21aa5a7ee4d2a79) --- rust/src/dcerpc/dcerpc.rs | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/rust/src/dcerpc/dcerpc.rs b/rust/src/dcerpc/dcerpc.rs index 07af91ec05..b9ee26e817 100644 --- a/rust/src/dcerpc/dcerpc.rs +++ b/rust/src/dcerpc/dcerpc.rs @@ -337,7 +337,7 @@ pub struct DCERPCState { pub buffer_tc: Vec, pub pad: u8, pub padleft: u16, - pub bytes_consumed: u16, + pub bytes_consumed: i32, pub tx_id: u64, pub query_completed: bool, pub data_needed_for_dir: u8, @@ -1020,7 +1020,7 @@ impl DCERPCState { // Check if header data was complete. In case of EoF or incomplete data, wait for more // data else return error - if self.bytes_consumed < DCERPC_HDR_LEN && input_len > 0 { + if self.bytes_consumed < DCERPC_HDR_LEN.into() && input_len > 0 { parsed = self.process_header(&buffer); if parsed == -1 { self.extend_buffer(buffer, direction); @@ -1029,7 +1029,7 @@ impl DCERPCState { if parsed == -2 { return AppLayerResult::err(); } - self.bytes_consumed += parsed as u16; + self.bytes_consumed += parsed; } let fraglen = self.get_hdr_fraglen().unwrap_or(0); @@ -1041,7 +1041,7 @@ impl DCERPCState { } else { self.query_completed = true; } - parsed = self.bytes_consumed as i32; + parsed = self.bytes_consumed; let current_call_id = self.get_hdr_call_id().unwrap_or(0); @@ -1112,7 +1112,7 @@ impl DCERPCState { return AppLayerResult::err(); } } - self.bytes_consumed += retval as u16; + self.bytes_consumed += retval; // If the query has been completed, clean the buffer and reset the direction if self.query_completed == true { -- 2.47.2