dcerpc: fix datatypes while handling stub data

pull/5442/head
Shivani Bhardwaj 5 years ago committed by Victor Julien
parent 3fd9a3d420
commit 301454e9e4

@ -811,11 +811,11 @@ impl DCERPCState {
} }
self.padleft = fraglen - DCERPC_HDR_LEN - bytes_consumed; self.padleft = fraglen - DCERPC_HDR_LEN - bytes_consumed;
let mut input_left = input.len() as u16 - bytes_consumed; let mut input_left = input.len() as u16 - bytes_consumed;
let mut parsed = bytes_consumed; let mut parsed = bytes_consumed as i32;
while input_left > 0 && parsed < fraglen { while input_left > 0 && parsed < fraglen as i32 {
let retval = self.handle_stub_data(&input[parsed as usize..], input_left, dir); let retval = self.handle_stub_data(&input[parsed as usize..], input_left, dir);
if retval > 0 && retval <= input_left { if retval > 0 && retval <= input_left {
parsed += retval; parsed += retval as i32;
input_left -= retval; input_left -= retval;
} else if input_left > 0 { } else if input_left > 0 {
SCLogDebug!( SCLogDebug!(
@ -826,11 +826,11 @@ impl DCERPCState {
"response" "response"
} }
); );
parsed -= input_left; parsed -= input_left as i32;
input_left = 0; input_left = 0;
} }
} }
parsed as i32 parsed
} }
pub fn process_request_pdu(&mut self, input: &[u8]) -> i32 { pub fn process_request_pdu(&mut self, input: &[u8]) -> i32 {
@ -1012,7 +1012,7 @@ impl DCERPCState {
} }
DCERPC_TYPE_REQUEST => { DCERPC_TYPE_REQUEST => {
retval = self.process_request_pdu(&buffer[parsed as usize..]); retval = self.process_request_pdu(&buffer[parsed as usize..]);
if retval == -1 { if retval < 0 {
return AppLayerResult::err(); return AppLayerResult::err();
} }
// In case the response came first, the transaction would complete later when // In case the response came first, the transaction would complete later when
@ -1036,7 +1036,7 @@ impl DCERPCState {
0, 0,
core::STREAM_TOCLIENT, core::STREAM_TOCLIENT,
); );
if retval == -1 { if retval < 0 {
return AppLayerResult::err(); return AppLayerResult::err();
} }
self.handle_bind_cache(current_call_id, true); self.handle_bind_cache(current_call_id, true);

Loading…
Cancel
Save