Merge in SNORT/snort3 from ~JALIIMRA/snort3:invalid_seq_ack to master
Squashed commit of the following:
commit
58ca09ddd93559039948ecc86a6af1ceac868200
Author: Juweria Ali Imran <jaliimra@cisco.com>
Date: Tue Apr 2 08:49:01 2024 -0400
stream_tcp: drop packet with invalid sequence number if NAP policy is inline and fix sequence number comparisons
// drop packet if sequence num is invalid
if ( !tns.tracker->is_segment_seq_valid(tsd) )
{
+ bool inline_mode = tsd.is_nap_policy_inline();
tcpStats.invalid_seq_num++;
- log_drop_reason(tns, tsd, false, "normalizer", "Normalizer: Sequence number is invalid\n");
- trim_win_payload(tns, tsd);
+ log_drop_reason(tns, tsd, inline_mode, "normalizer", "Normalizer: Sequence number is invalid\n");
+ trim_win_payload(tns, tsd, 0, inline_mode);
return NORM_BAD_SEQ;
}
if ( trs.sos.keep_segment )
{
if ( !trs.sos.left and trs.sos.right and
- paf_initialized(&trs.paf_state) and trs.paf_state.pos > tsd.get_seq() )
+ paf_initialized(&trs.paf_state) and SEQ_GT(trs.paf_state.pos, tsd.get_seq()) )
{
return;
}
bool is_packet_missing(uint32_t to_seq)
{
if ( next )
- return (i_seq + i_len) != next->i_seq;
+ return !(SEQ_EQ((i_seq + i_len), next->i_seq));
else
- return (c_seq + c_len) < to_seq;
+ return SEQ_LT((c_seq + c_len), to_seq);
}
void update_ressembly_lengths(uint16_t bytes)
if ( SEQ_GT(tsd.get_ack(), snd_una) )
{
snd_una = tsd.get_ack();
- if ( snd_nxt < snd_una )
+ if ( SEQ_LT(snd_nxt, snd_una) )
snd_nxt = snd_una;
}
if ( !tsd.get_len() and snd_wnd == 0