From 9e288ec2dfc8e7eefdf9d9b2340e70255c002fc0 Mon Sep 17 00:00:00 2001 From: "Akhilesh MY (amuttuva)" Date: Tue, 13 Aug 2024 16:42:44 +0000 Subject: [PATCH] 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 --- src/service_inspectors/ftp_telnet/telnet_splitter.cc | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) 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; -- 2.47.3