]> git.ipfire.org Git - thirdparty/suricata.git/commitdiff
file: fix files not getting pruned 3247/head
authorVictor Julien <victor@inliniac.net>
Tue, 13 Feb 2018 12:42:39 +0000 (13:42 +0100)
committerVictor Julien <victor@inliniac.net>
Wed, 14 Feb 2018 14:38:30 +0000 (15:38 +0100)
When the filedata logger is enabled (file extraction), but a file is not
stored due to no rules matching to force this, the file would never be
freed.

This was caused by a check in the file pruning logic that only freed a
file when the FILE_STORED flag was set. However files can also have the
FILE_NOSTORE flag set which indicates that a file won't be stored.

This patch makes sure that both conditions lead to file pruning.

src/util-file.c

index 5b4a575ad612ab69fbd29d66d4ee4c8e390e05a5..2620758f6b54bd834101f3ce2fe46914cde8bea6 100644 (file)
@@ -334,7 +334,7 @@ static int FilePruneFile(File *file)
     /* file is done when state is closed+, logging/storing is done (if any) */
     if (file->state >= FILE_STATE_CLOSED &&
         (!RunModeOutputFileEnabled() || (file->flags & FILE_LOGGED)) &&
-        (!RunModeOutputFiledataEnabled() || (file->flags & FILE_STORED)))
+        (!RunModeOutputFiledataEnabled() || (file->flags & (FILE_STORED|FILE_NOSTORE))))
     {
         SCReturnInt(1);
     } else {