From: Shivani Bhardwaj Date: Thu, 24 Sep 2020 05:22:01 +0000 (+0530) Subject: dcerpc: fix datatypes while handling stub data X-Git-Tag: suricata-6.0.0~59 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=301454e9e4118de8029750931ea690adeb25c20a;p=thirdparty%2Fsuricata.git dcerpc: fix datatypes while handling stub data --- diff --git a/rust/src/dcerpc/dcerpc.rs b/rust/src/dcerpc/dcerpc.rs index c336f50b82..d029e1bd55 100644 --- a/rust/src/dcerpc/dcerpc.rs +++ b/rust/src/dcerpc/dcerpc.rs @@ -811,11 +811,11 @@ impl DCERPCState { } self.padleft = fraglen - DCERPC_HDR_LEN - bytes_consumed; let mut input_left = input.len() as u16 - bytes_consumed; - let mut parsed = bytes_consumed; - while input_left > 0 && parsed < fraglen { + let mut parsed = bytes_consumed as i32; + while input_left > 0 && parsed < fraglen as i32 { let retval = self.handle_stub_data(&input[parsed as usize..], input_left, dir); if retval > 0 && retval <= input_left { - parsed += retval; + parsed += retval as i32; input_left -= retval; } else if input_left > 0 { SCLogDebug!( @@ -826,11 +826,11 @@ impl DCERPCState { "response" } ); - parsed -= input_left; + parsed -= input_left as i32; input_left = 0; } } - parsed as i32 + parsed } pub fn process_request_pdu(&mut self, input: &[u8]) -> i32 { @@ -1012,7 +1012,7 @@ impl DCERPCState { } DCERPC_TYPE_REQUEST => { retval = self.process_request_pdu(&buffer[parsed as usize..]); - if retval == -1 { + if retval < 0 { return AppLayerResult::err(); } // In case the response came first, the transaction would complete later when @@ -1036,7 +1036,7 @@ impl DCERPCState { 0, core::STREAM_TOCLIENT, ); - if retval == -1 { + if retval < 0 { return AppLayerResult::err(); } self.handle_bind_cache(current_call_id, true);