From 48c7f18453f5801942166ee994e98c2f44e64967 Mon Sep 17 00:00:00 2001 From: Victor Julien Date: Fri, 28 Jan 2011 10:34:43 +0100 Subject: [PATCH] Fix bug in the segment insert code causing an inconsistent segment list in some overlap conditions. --- src/stream-tcp-reassemble.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/stream-tcp-reassemble.c b/src/stream-tcp-reassemble.c index b261c6e98d..ffba59fa08 100644 --- a/src/stream-tcp-reassemble.c +++ b/src/stream-tcp-reassemble.c @@ -900,7 +900,7 @@ static int HandleSegmentStartsBeforeListSegment(ThreadVars *tv, TcpReassemblyThr if (list_seg->prev != NULL && SEQ_LT((list_seg->prev->seq + list_seg->prev->payload_len), list_seg->seq)) { SCLogDebug("GAP to fill before list segment, size %u", list_seg->seq - (list_seg->prev->seq + list_seg->prev->payload_len)); - packet_length = list_seg->seq - (list_seg->prev->seq + list_seg->prev->payload_len); + packet_length = list_seg->seq - seg->seq; if (packet_length > seg->payload_len) { packet_length = seg->payload_len; } @@ -4113,6 +4113,7 @@ static int StreamTcpTestStartsBeforeListSegment(TcpStream *stream) { return 0; } + SCLogDebug("sending segment with SEQ 21, len 3"); StreamTcpCreateTestPacket(payload, 0x4c, 3, 4); /*LLL*/ p->tcph->th_seq = htonl(21); p->tcph->th_ack = htonl(31);