]> git.ipfire.org Git - people/ms/suricata.git/commitdiff
stream-tcp-reassemble: fix reassembly direction for FIN packets
authorAngelo Mirabella <amirabella@lastline.com>
Thu, 20 Jan 2022 14:52:33 +0000 (14:52 +0000)
committerVictor Julien <vjulien@oisf.net>
Thu, 27 Jan 2022 14:34:01 +0000 (15:34 +0100)
Suricata invokes the stream reassembly logic only for the current packet
direction if the packet contains a FIN flag. However, this does not
handle the case in which the packet ACKs data from the opposing direction.
This patch forces the invocation of the stream reassembly logic
on both direction when Suricata sees a FIN packet.

src/stream-tcp-reassemble.c

index 99f0912d1d9ffcd6a01505d62767f7d26c89b0f6..9ff2916bb39fa9515f55a6d2c8c35763b886ef4e 100644 (file)
@@ -1853,7 +1853,11 @@ int StreamTcpReassembleHandleSegment(ThreadVars *tv, TcpReassemblyThreadCtx *ra_
     } else if (p->tcph->th_flags & TH_RST) { // accepted rst
         dir = UPDATE_DIR_PACKET;
     } else if ((p->tcph->th_flags & TH_FIN) && ssn->state > TCP_TIME_WAIT) {
-        dir = UPDATE_DIR_PACKET;
+        if (p->tcph->th_flags & TH_ACK) {
+            dir = UPDATE_DIR_BOTH;
+        } else {
+            dir = UPDATE_DIR_PACKET;
+        }
     } else if (ssn->state == TCP_CLOSED) {
         dir = UPDATE_DIR_BOTH;
     }