]> git.ipfire.org Git - thirdparty/suricata.git/commitdiff
stream/tcp: fix STREAM_HAS_SEEN_DATA macro 4726/head
authorVictor Julien <victor@inliniac.net>
Tue, 24 Mar 2020 12:11:03 +0000 (13:11 +0100)
committerVictor Julien <victor@inliniac.net>
Tue, 24 Mar 2020 14:34:36 +0000 (15:34 +0100)
The macro would not return true for smaller TCP streams, leading to
cases where the app-layer was not notified of EOF.

src/stream-tcp-private.h

index 483d30d0e6f5d67432d9788cbb865c9b3a7b2964..bd1f6d04ba6d468e6a393559dfeaa162c6c28360 100644 (file)
@@ -89,7 +89,7 @@ RB_PROTOTYPE(TCPSEG, TcpSegment, rb, TcpSegmentCompare);
 #define STREAM_SEQ_RIGHT_EDGE(stream)   (stream)->segs_right_edge
 #define STREAM_RIGHT_EDGE(stream)       (STREAM_BASE_OFFSET((stream)) + (STREAM_SEQ_RIGHT_EDGE((stream)) - (stream)->base_seq))
 /* return true if we have seen data segments. */
-#define STREAM_HAS_SEEN_DATA(stream)    (!RB_EMPTY(&(stream)->sb.sbb_tree) || (stream)->sb.stream_offset)
+#define STREAM_HAS_SEEN_DATA(stream)    (!RB_EMPTY(&(stream)->sb.sbb_tree) || (stream)->sb.stream_offset || (stream)->sb.buf_offset)
 
 typedef struct TcpStream_ {
     uint16_t flags:12;              /**< Flag specific to the stream e.g. Timestamp */