From: Juweria Ali Imran (jaliimra) Date: Fri, 3 May 2024 00:21:16 +0000 (+0000) Subject: Pull request #4305: stream_tcp: add reassembler class for missed_3whs X-Git-Tag: 3.2.1.0~12 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=18c302c4eeb77ee5affe6b4ef53839ba353cd66c;p=thirdparty%2Fsnort3.git Pull request #4305: stream_tcp: add reassembler class for missed_3whs Merge in SNORT/snort3 from ~JALIIMRA/snort3:asymmetric_option to master Squashed commit of the following: commit 2d3af8d9b89b9424974ec9a710e33e9b2d47e87a Author: Juweria Ali Imran Date: Thu May 2 16:31:16 2024 -0400 stream_tcp: add reassembler class for missed_3whs --- diff --git a/src/stream/tcp/tcp_reassemblers.cc b/src/stream/tcp/tcp_reassemblers.cc index a1302cea2..cf72ecaa2 100644 --- a/src/stream/tcp/tcp_reassemblers.cc +++ b/src/stream/tcp/tcp_reassemblers.cc @@ -252,6 +252,22 @@ private: { full_right_overlap_os5(trs); } }; +class TcpReassemblerMissed3whs : public TcpReassemblerFirst +{ +public: + TcpReassemblerMissed3whs() = default; + +private: + void insert_left_overlap(TcpReassemblerState& trs) override + { left_overlap_keep_first(trs); } + + void insert_right_overlap(TcpReassemblerState& trs) override + { right_overlap_truncate_new(trs); } + + void insert_full_overlap(TcpReassemblerState& trs) override + { full_right_overlap_os5(trs); } +}; + void TcpReassemblerPolicy::init(TcpSession* ssn, TcpStreamTracker* trk, StreamPolicy pol, bool server) { trs.sos.init_sos(ssn, pol); @@ -298,16 +314,17 @@ void TcpReassemblerFactory::initialize() reassemblers[StreamPolicy::OS_WINDOWS2K3] = new TcpReassemblerWindows2K3; reassemblers[StreamPolicy::OS_VISTA] = new TcpReassemblerVista; reassemblers[StreamPolicy::OS_PROXY] = new TcpReassemblerProxy; + reassemblers[StreamPolicy::MISSED_3WHS] = new TcpReassemblerMissed3whs; } void TcpReassemblerFactory::term() { - for ( auto sp = StreamPolicy::OS_FIRST; sp <= StreamPolicy::OS_PROXY; sp++ ) + for ( auto sp = StreamPolicy::OS_FIRST; sp < StreamPolicy::OS_END_OF_LIST; sp++ ) delete reassemblers[sp]; } TcpReassembler* TcpReassemblerFactory::get_instance(StreamPolicy os_policy) { - assert( os_policy <= StreamPolicy::OS_PROXY ); + assert( os_policy < StreamPolicy::OS_END_OF_LIST ); return reassemblers[os_policy]; }