]> git.ipfire.org Git - thirdparty/suricata.git/commitdiff
stream: harden data size handling
authorVictor Julien <victor@inliniac.net>
Wed, 21 Oct 2020 18:22:50 +0000 (20:22 +0200)
committerVictor Julien <victor@inliniac.net>
Wed, 4 Nov 2020 15:30:13 +0000 (16:30 +0100)
src/stream-tcp-reassemble.c

index 8b195b6d166006e9d62a6caec450f5a4195f0d95..80de222e329065344cf430b3da01b1ba92a83ff7 100644 (file)
@@ -1043,11 +1043,10 @@ static inline uint32_t AdjustToAcked(const Packet *p,
     /* get window of data that is acked */
     if (StreamTcpInlineMode() == FALSE) {
         SCLogDebug("ssn->state %s", StreamTcpStateAsString(ssn->state));
-        if ((ssn->state < TCP_CLOSED ||
-                    (ssn->state == TCP_CLOSED &&
-                     (ssn->flags & STREAMTCP_FLAG_CLOSED_BY_RST) != 0)) &&
-                (p->flags & PKT_PSEUDO_STREAM_END))
-        {
+        if (data_len == 0 || ((ssn->state < TCP_CLOSED ||
+                                      (ssn->state == TCP_CLOSED &&
+                                              (ssn->flags & STREAMTCP_FLAG_CLOSED_BY_RST) != 0)) &&
+                                     (p->flags & PKT_PSEUDO_STREAM_END))) {
             // fall through, we use all available data
         } else {
             uint64_t last_ack_abs = STREAM_BASE_OFFSET(stream);