]> git.ipfire.org Git - thirdparty/suricata.git/commitdiff
stream: fix stream pruning being too aggressive
authorVictor Julien <vjulien@oisf.net>
Thu, 13 Jan 2022 11:13:43 +0000 (12:13 +0100)
committerJeff Lucovsky <jeff@lucovsky.org>
Sat, 15 Jan 2022 13:01:18 +0000 (08:01 -0500)
Pruning of StreamBufferBlocks could remove blocks that fell entirely
after the target offset due to a logic error. This could lead to data
being evicted that was still meant to be processed in theapp-layer
parsers.

Bug: #4953.
(cherry picked from commit 78f5e082f5188204606ab9ceb5044447e49aaca2)

src/util-streaming-buffer.c

index fe140ec54f1f657f3fb4b756cc784904203e1129..4822e94af6dcb1de65b31c6996b25a93790a01f6 100644 (file)
@@ -420,7 +420,7 @@ static void SBBPrune(StreamingBuffer *sb)
     StreamingBufferBlock *sbb = NULL, *safe = NULL;
     RB_FOREACH_SAFE(sbb, SBB, &sb->sbb_tree, safe) {
         /* completely beyond window, we're done */
-        if (sbb->offset > sb->stream_offset) {
+        if (sbb->offset >= sb->stream_offset) {
             sb->head = sbb;
             break;
         }