]> git.ipfire.org Git - thirdparty/suricata.git/commitdiff
ssh: minor cleanups in incomplete handling
authorVictor Julien <victor@inliniac.net>
Sat, 30 May 2020 18:35:21 +0000 (20:35 +0200)
committerVictor Julien <victor@inliniac.net>
Sat, 30 May 2020 18:39:34 +0000 (20:39 +0200)
rust/src/ssh/ssh.rs

index 1f8601ecf8ce2d7cad23ef68cad8dad1d679b9cf..a26ae0d1cd630332c4000d556084224b8c2bc2c3 100644 (file)
@@ -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 {