kerberos: fix against packet split in record size

pull/4664/head
Philippe Antoine 7 years ago committed by Victor Julien
parent 76dd951523
commit 23f796a021

@ -528,7 +528,6 @@ pub extern "C" fn rs_krb5_parse_request_tcp(_flow: *const core::Flow,
input_len: u32,
_data: *const std::os::raw::c_void,
_flags: u8) -> i32 {
if input_len < 4 { return -1; }
let buf = build_slice!(input,input_len as usize);
let state = cast_pointer!(state,KRB5State);
@ -556,6 +555,10 @@ pub extern "C" fn rs_krb5_parse_request_tcp(_flow: *const core::Flow,
state.record_ts = record as usize;
cur_i = rem;
},
Err(nom::Err::Incomplete(_)) => {
state.defrag_buf_ts.extend_from_slice(cur_i);
return 0;
}
_ => {
SCLogDebug!("rs_krb5_parse_request_tcp: reading record mark failed!");
return 1;
@ -586,7 +589,6 @@ pub extern "C" fn rs_krb5_parse_response_tcp(_flow: *const core::Flow,
input_len: u32,
_data: *const std::os::raw::c_void,
_flags: u8) -> i32 {
if input_len < 4 { return -1; }
let buf = build_slice!(input,input_len as usize);
let state = cast_pointer!(state,KRB5State);
@ -614,6 +616,10 @@ pub extern "C" fn rs_krb5_parse_response_tcp(_flow: *const core::Flow,
state.record_tc = record as usize;
cur_i = rem;
},
Err(nom::Err::Incomplete(_)) => {
state.defrag_buf_tc.extend_from_slice(cur_i);
return 0;
}
_ => {
SCLogDebug!("reading record mark failed!");
return 1;

Loading…
Cancel
Save