]> git.ipfire.org Git - thirdparty/suricata.git/commitdiff
rust/file: handle file open errors
authorVictor Julien <victor@inliniac.net>
Thu, 25 Jan 2018 09:05:55 +0000 (10:05 +0100)
committerVictor Julien <victor@inliniac.net>
Mon, 12 Feb 2018 09:02:08 +0000 (10:02 +0100)
rust/src/filetracker.rs

index 0bfe1a7077140f345e7d908f8b5aafb6f3517f65..b1b7a4d5df22252dd098a7b1cd3a012686f708c6 100644 (file)
@@ -95,8 +95,8 @@ impl FileTransferTracker {
         let r = files.file_open(config, &self.track_id, name, flags);
         if r == 0 {
             files.file_set_txid_on_last_file(self.tx_id);
+            self.file_open = true;
         }
-        self.file_open = true;
         r
     }
 
@@ -110,7 +110,7 @@ impl FileTransferTracker {
     }
 
     pub fn trunc (&mut self, files: &mut FileContainer, flags: u16) {
-        if self.file_is_truncated {
+        if self.file_is_truncated || !self.file_open {
             return;
         }
         let myflags = flags | 1; // TODO util-file.c::FILE_TRUNCATED
@@ -159,9 +159,13 @@ impl FileTransferTracker {
             self.open(config, files, flags, name);
         }
 
-        let res = self.update(files, flags, data, 0);
-        SCLogDebug!("NEW CHUNK: update res {:?}", res);
-        res
+        if self.file_open == true {
+            let res = self.update(files, flags, data, 0);
+            SCLogDebug!("NEW CHUNK: update res {:?}", res);
+            return res;
+        }
+
+        0
     }
 
     /// update the file tracker