]> git.ipfire.org Git - thirdparty/suricata.git/commitdiff
http2: file tracker is initialized when file is closed
authorPhilippe Antoine <pantoine@oisf.net>
Thu, 8 Jun 2023 13:08:02 +0000 (15:08 +0200)
committerVictor Julien <vjulien@oisf.net>
Mon, 10 Jul 2023 07:26:59 +0000 (09:26 +0200)
Ticket: #6130

This avoids quadratic complexity by having http2_range_key_get
looking in a growing number of frames

rust/src/filetracker.rs

index d372882ed12f3c473fd7be0fb673c572101f80de..d35126d7aed3387ed5ae8de39c3d983f26d68098 100644 (file)
@@ -63,6 +63,7 @@ pub struct FileTransferTracker {
 
     fill_bytes: u8,
     pub file_open: bool,
+    file_closed: bool,
     chunk_is_last: bool,
     chunk_is_ooo: bool,
     file_is_truncated: bool,
@@ -86,7 +87,7 @@ impl FileTransferTracker {
     }
 
     pub fn is_initialized(&self) -> bool {
-        return self.file_open || self.file_is_truncated;
+        return self.file_open || self.file_is_truncated || self.file_closed;
     }
 
     fn open(&mut self, config: &'static SuricataFileContext, name: &[u8]) -> i32
@@ -105,6 +106,7 @@ impl FileTransferTracker {
             self.file.file_close(config, &self.track_id, self.file_flags);
         }
         self.file_open = false;
+        self.file_closed = true;
         self.tracked = 0;
     }