From: Victor Julien Date: Sat, 30 May 2020 18:35:21 +0000 (+0200) Subject: ssh: minor cleanups in incomplete handling X-Git-Tag: suricata-6.0.0-beta1~398 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=9fd326b6c070128bbca2788ca64c14f248d901c1;p=thirdparty%2Fsuricata.git ssh: minor cleanups in incomplete handling --- diff --git a/rust/src/ssh/ssh.rs b/rust/src/ssh/ssh.rs index 1f8601ecf8..a26ae0d1cd 100644 --- a/rust/src/ssh/ssh.rs +++ b/rust/src/ssh/ssh.rs @@ -224,16 +224,12 @@ impl SSHState { if hdr.flags == SSHConnectionState::SshStateBannerWaitEol { match parser::ssh_parse_line(input) { Ok((rem, _)) => { - let r = self.parse_record(rem, resp, pstate); - if r.status == 1 { + let mut r = self.parse_record(rem, resp, pstate); + if r.is_incomplete() { //adds bytes consumed by banner to incomplete result - return AppLayerResult::incomplete( - r.consumed + (input.len() - rem.len()) as u32, - r.needed, - ); - } else { - return r; + r.consumed += (input.len() - rem.len()) as u32; } + return r; } Err(nom::Err::Incomplete(_)) => { return AppLayerResult::incomplete(0 as u32, (input.len() + 1) as u32); @@ -266,16 +262,12 @@ impl SSHState { ); self.set_event(SSHEvent::LongBanner); } - let r = self.parse_record(rem, resp, pstate); - if r.status == 1 { + let mut r = self.parse_record(rem, resp, pstate); + if r.is_incomplete() { //adds bytes consumed by banner to incomplete result - return AppLayerResult::incomplete( - r.consumed + (input.len() - rem.len()) as u32, - r.needed, - ); - } else { - return r; + r.consumed += (input.len() - rem.len()) as u32; } + return r; } Err(nom::Err::Incomplete(_)) => { if input.len() < SSH_MAX_BANNER_LEN {