From: Akhilesh MY (amuttuva) Date: Tue, 13 Aug 2024 16:42:44 +0000 (+0000) Subject: Pull request #4412: telnet: avoid flush when cr or lf is between commands X-Git-Tag: 3.3.4.0~5 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=9e288ec2dfc8e7eefdf9d9b2340e70255c002fc0;p=thirdparty%2Fsnort3.git Pull request #4412: telnet: avoid flush when cr or lf is between commands Merge in SNORT/snort3 from ~AMUTTUVA/snort3:telnet_cr_fix to master Squashed commit of the following: commit c7c9dbff527ab392d276e6deae89b542b5ca13a4 Author: Akhilesh MY Date: Tue Aug 6 02:41:17 2024 -0400 telnet: avoid flush when cr or lf is between commands --- diff --git a/src/service_inspectors/ftp_telnet/telnet_splitter.cc b/src/service_inspectors/ftp_telnet/telnet_splitter.cc index d71dffa14..2ee5abe69 100644 --- a/src/service_inspectors/ftp_telnet/telnet_splitter.cc +++ b/src/service_inspectors/ftp_telnet/telnet_splitter.cc @@ -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(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(memchr( read_ptr, TNC_IAC, end - read_ptr)); if ( iac_ptr ) { state = TELNET_IAC;