]> git.ipfire.org Git - thirdparty/snort3.git/commitdiff
Pull request #4412: telnet: avoid flush when cr or lf is between commands
authorAkhilesh MY (amuttuva) <amuttuva@cisco.com>
Tue, 13 Aug 2024 16:42:44 +0000 (16:42 +0000)
committerShanmugam S (shanms) <shanms@cisco.com>
Tue, 13 Aug 2024 16:42:44 +0000 (16:42 +0000)
Merge in SNORT/snort3 from ~AMUTTUVA/snort3:telnet_cr_fix to master

Squashed commit of the following:

commit c7c9dbff527ab392d276e6deae89b542b5ca13a4
Author: Akhilesh MY <amuttuva@cisco.com>
Date:   Tue Aug 6 02:41:17 2024 -0400

    telnet: avoid flush when cr or lf is between commands

src/service_inspectors/ftp_telnet/telnet_splitter.cc

index d71dffa149ee70c1232dcce234daf34a2e17f10f..2ee5abe6905adaafb0f03d1f3fa3b659de3f556e 100644 (file)
@@ -65,13 +65,14 @@ StreamSplitter::Status TelnetSplitter::scan(
                     ptr = lf;
                 else if ( cr && lf )
                     ptr = ( cr > lf ) ? cr : lf;
-                if ( ptr )
+
+                const uint8_t* iac_ptr = static_cast<const uint8_t*>(memchr( read_ptr, TNC_IAC, end - read_ptr));
+                if ( (ptr && iac_ptr && ptr < iac_ptr) || (ptr && !iac_ptr) )
                 {
                     fp_ptr = ptr;
                     read_ptr = fp_ptr;
                 }
 
-                const uint8_t* iac_ptr = static_cast<const uint8_t*>(memchr( read_ptr, TNC_IAC, end - read_ptr));
                 if ( iac_ptr )
                 {
                     state = TELNET_IAC;