From: Mike Stepanek (mstepane) Date: Tue, 29 Oct 2019 19:37:26 +0000 (-0400) Subject: Merge pull request #1812 in SNORT/snort3 from ~SMINUT/snort3:tcp_reassembler_int2uint... X-Git-Tag: 3.0.0-263~4 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=61ade9f2d7634d040b0f2264b3b40ee6ba2c11b5;p=thirdparty%2Fsnort3.git Merge pull request #1812 in SNORT/snort3 from ~SMINUT/snort3:tcp_reassembler_int2uint to master Squashed commit of the following: commit 9ac10d66c206a949d9e7713bffd23ce14f65ef80 Author: Silviu Minut Date: Tue Oct 22 11:41:56 2019 -0400 stream: change int16_t to uint16_t in the signature of TcpReassembler::add_reassembly_segment(). Do not use tsn->next->c_len when setting PKT_PDU_TAIL in TcpReassembler::flush_data_segments(). --- diff --git a/src/stream/tcp/segment_overlap_editor.h b/src/stream/tcp/segment_overlap_editor.h index 8b0ba0abf..19dc0ac40 100644 --- a/src/stream/tcp/segment_overlap_editor.h +++ b/src/stream/tcp/segment_overlap_editor.h @@ -112,7 +112,7 @@ protected: virtual int insert_full_overlap(TcpReassemblerState&) = 0; virtual int add_reassembly_segment( - TcpReassemblerState&, TcpSegmentDescriptor&, int16_t, uint32_t, + TcpReassemblerState&, TcpSegmentDescriptor&, uint16_t, uint32_t, uint32_t, uint32_t, TcpSegmentNode*) = 0; virtual int dup_reassembly_segment(TcpReassemblerState&, TcpSegmentNode*, TcpSegmentNode**) = 0; @@ -121,4 +121,3 @@ protected: }; #endif - diff --git a/src/stream/tcp/tcp_reassembler.cc b/src/stream/tcp/tcp_reassembler.cc index e71344c01..fcc79aa86 100644 --- a/src/stream/tcp/tcp_reassembler.cc +++ b/src/stream/tcp/tcp_reassembler.cc @@ -199,7 +199,7 @@ bool TcpReassembler::is_segment_fasttrack( } int TcpReassembler::add_reassembly_segment( - TcpReassemblerState& trs, TcpSegmentDescriptor& tsd, int16_t len, uint32_t slide, + TcpReassemblerState& trs, TcpSegmentDescriptor& tsd, uint16_t len, uint32_t slide, uint32_t trunc_len, uint32_t seq, TcpSegmentNode* left) { const int32_t new_size = len - slide - trunc_len; @@ -403,8 +403,7 @@ int TcpReassembler::flush_data_segments( if ( !tsn->next or (bytes_to_copy < tsn->c_len) or SEQ_EQ(tsn->c_seq + bytes_to_copy, to_seq) or - (total_flushed + tsn->c_len + tsn->next->c_len > - trs.tracker->splitter->get_max_pdu()) ) + (total_flushed + tsn->c_len > trs.tracker->splitter->get_max_pdu()) ) { flags |= PKT_PDU_TAIL; } @@ -448,9 +447,7 @@ int TcpReassembler::flush_data_segments( break; } - if ( ( sb.data || !trs.sos.seglist.cur_rseg ) or - ( ( total_flushed + trs.sos.seglist.cur_rseg->c_len ) > - trs.tracker->splitter->get_max_pdu() ) ) + if ( sb.data || !trs.sos.seglist.cur_rseg ) break; } @@ -1322,4 +1319,3 @@ int TcpReassembler::queue_packet_for_reassembly( return rc; } - diff --git a/src/stream/tcp/tcp_reassembler.h b/src/stream/tcp/tcp_reassembler.h index 93c6ad0c8..9b8694c7c 100644 --- a/src/stream/tcp/tcp_reassembler.h +++ b/src/stream/tcp/tcp_reassembler.h @@ -45,7 +45,7 @@ protected: TcpReassembler() = default; int add_reassembly_segment( - TcpReassemblerState&, TcpSegmentDescriptor&, int16_t len, uint32_t slide, + TcpReassemblerState&, TcpSegmentDescriptor&, uint16_t len, uint32_t slide, uint32_t trunc, uint32_t seq, TcpSegmentNode* left) override; int dup_reassembly_segment( @@ -88,4 +88,3 @@ protected: }; #endif -