From: Victor Julien Date: Tue, 24 Mar 2020 12:11:03 +0000 (+0100) Subject: stream/tcp: fix STREAM_HAS_SEEN_DATA macro X-Git-Tag: suricata-6.0.0-beta1~596 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=e500c59b994ef2c4ba1c2bd17b4d4ff674a144ef;p=thirdparty%2Fsuricata.git stream/tcp: fix STREAM_HAS_SEEN_DATA macro The macro would not return true for smaller TCP streams, leading to cases where the app-layer was not notified of EOF. --- diff --git a/src/stream-tcp-private.h b/src/stream-tcp-private.h index 483d30d0e6..bd1f6d04ba 100644 --- a/src/stream-tcp-private.h +++ b/src/stream-tcp-private.h @@ -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 */