From 389f166d780324e44d664bef02b6a62df7f2887f Mon Sep 17 00:00:00 2001 From: Victor Julien Date: Tue, 11 Jul 2023 10:04:45 +0200 Subject: [PATCH] file: remove FILE_USE_DETECT flag All implementations were converted to use the logic, so the flag itself can be removed. --- rust/src/filecontainer.rs | 2 -- rust/src/http2/http2.rs | 4 ++-- rust/src/nfs/nfs.rs | 2 +- rust/src/smb/files.rs | 2 +- src/app-layer-ftp.c | 3 +-- src/app-layer-htp-file.c | 4 ---- src/app-layer-smtp.c | 4 +--- src/util-file.c | 15 ++++----------- 8 files changed, 10 insertions(+), 26 deletions(-) diff --git a/rust/src/filecontainer.rs b/rust/src/filecontainer.rs index b1784b6c2f..c51daaa8f1 100644 --- a/rust/src/filecontainer.rs +++ b/rust/src/filecontainer.rs @@ -24,8 +24,6 @@ use crate::core::*; extern { pub fn FileFlowFlagsToFlags(flow_file_flags: u16, flags: u8) -> u16; } -pub const FILE_USE_DETECT: u16 = BIT_U16!(13); - #[repr(C)] #[derive(Debug)] diff --git a/rust/src/http2/http2.rs b/rust/src/http2/http2.rs index 5939c97210..326030f9bb 100644 --- a/rust/src/http2/http2.rs +++ b/rust/src/http2/http2.rs @@ -211,8 +211,8 @@ impl HTTP2Transaction { } pub fn update_file_flags(&mut self, flow_file_flags: u16) { - self.ft_ts.file_flags = unsafe { FileFlowFlagsToFlags(flow_file_flags, STREAM_TOSERVER) | FILE_USE_DETECT }; - self.ft_tc.file_flags = unsafe { FileFlowFlagsToFlags(flow_file_flags, STREAM_TOCLIENT) | FILE_USE_DETECT }; + self.ft_ts.file_flags = unsafe { FileFlowFlagsToFlags(flow_file_flags, STREAM_TOSERVER) }; + self.ft_tc.file_flags = unsafe { FileFlowFlagsToFlags(flow_file_flags, STREAM_TOCLIENT) }; } fn decompress<'a>( diff --git a/rust/src/nfs/nfs.rs b/rust/src/nfs/nfs.rs index 2e1c785eaa..dfb5e0e724 100644 --- a/rust/src/nfs/nfs.rs +++ b/rust/src/nfs/nfs.rs @@ -154,7 +154,7 @@ impl NFSTransactionFile { } pub fn update_file_flags(&mut self, flow_file_flags: u16) { let dir_flag = if self.direction == Direction::ToServer { STREAM_TOSERVER } else { STREAM_TOCLIENT }; - self.file_tracker.file_flags = unsafe { FileFlowFlagsToFlags(flow_file_flags, dir_flag) | FILE_USE_DETECT }; + self.file_tracker.file_flags = unsafe { FileFlowFlagsToFlags(flow_file_flags, dir_flag) }; } } diff --git a/rust/src/smb/files.rs b/rust/src/smb/files.rs index 996794b529..b290357428 100644 --- a/rust/src/smb/files.rs +++ b/rust/src/smb/files.rs @@ -46,7 +46,7 @@ impl SMBTransactionFile { pub fn update_file_flags(&mut self, flow_file_flags: u16) { let dir_flag = if self.direction == Direction::ToServer { STREAM_TOSERVER } else { STREAM_TOCLIENT }; - self.file_tracker.file_flags = unsafe { FileFlowFlagsToFlags(flow_file_flags, dir_flag) | FILE_USE_DETECT }; + self.file_tracker.file_flags = unsafe { FileFlowFlagsToFlags(flow_file_flags, dir_flag) }; } } diff --git a/src/app-layer-ftp.c b/src/app-layer-ftp.c index f96fcc362f..c22c39c134 100644 --- a/src/app-layer-ftp.c +++ b/src/app-layer-ftp.c @@ -1002,8 +1002,7 @@ static AppLayerResult FTPDataParse(Flow *f, FtpDataState *ftpdata_state, ftpdata_state->tx_data.file_tx = direction & (STREAM_TOSERVER | STREAM_TOCLIENT); /* we depend on detection engine for file pruning */ - const uint16_t flags = - FileFlowFlagsToFlags(ftpdata_state->tx_data.file_flags, direction) | FILE_USE_DETECT; + const uint16_t flags = FileFlowFlagsToFlags(ftpdata_state->tx_data.file_flags, direction); int ret = 0; SCLogDebug("FTP-DATA input_len %u flags %04x dir %d/%s EOF %s", input_len, flags, direction, diff --git a/src/app-layer-htp-file.c b/src/app-layer-htp-file.c index 867d47ff01..f96b370160 100644 --- a/src/app-layer-htp-file.c +++ b/src/app-layer-htp-file.c @@ -67,8 +67,6 @@ int HTPFileOpen(HtpState *s, HtpTxUserData *tx, const uint8_t *filename, uint16_ flags = FileFlowFlagsToFlags(tx->tx_data.file_flags, STREAM_TOSERVER); } - flags |= FILE_USE_DETECT; - if (FileOpenFileWithId(files, &htp_sbcfg, s->file_track_id++, filename, filename_len, data, data_len, flags) != 0) { retval = -1; @@ -166,8 +164,6 @@ int HTPFileOpenWithRange(HtpState *s, HtpTxUserData *txud, const uint8_t *filena flags = FileFlowToFlags(s->f, STREAM_TOCLIENT); FileContainer *files = &txud->files_tc; - flags |= FILE_USE_DETECT; - // we open a file for this specific range if (FileOpenFileWithId(files, &htp_sbcfg, s->file_track_id++, filename, filename_len, data, data_len, flags) != 0) { diff --git a/src/app-layer-smtp.c b/src/app-layer-smtp.c index 1546a7ec7f..bf93c45178 100644 --- a/src/app-layer-smtp.c +++ b/src/app-layer-smtp.c @@ -496,8 +496,6 @@ int SMTPProcessDataChunk(const uint8_t *chunk, uint32_t len, DEBUG_VALIDATE_BUG_ON(tx == NULL); uint16_t flags = FileFlowToFlags(flow, STREAM_TOSERVER); - /* we depend on detection engine for file pruning */ - flags |= FILE_USE_DETECT; /* Find file */ if (entity->ctnt_flags & CTNT_IS_ATTACHMENT) { @@ -1214,7 +1212,7 @@ static int SMTPProcessRequest(SMTPState *state, Flow *f, AppLayerParserState *ps } if (FileOpenFileWithId(&tx->files_ts, &smtp_config.sbcfg, state->file_track_id++, (uint8_t *)rawmsgname, strlen(rawmsgname), NULL, 0, - FILE_NOMD5 | FILE_NOMAGIC | FILE_USE_DETECT) == 0) { + FILE_NOMD5 | FILE_NOMAGIC) == 0) { SMTPNewFile(tx, tx->files_ts.tail); } } else if (smtp_config.decode_mime) { diff --git a/src/util-file.c b/src/util-file.c index d2d899439b..0449a2edae 100644 --- a/src/util-file.c +++ b/src/util-file.c @@ -386,9 +386,9 @@ static int FilePruneFile(File *file, const StreamingBufferConfig *cfg) if (file->flags & FILE_STORE) { left_edge = MIN(left_edge,file->content_stored); } - if (file->flags & FILE_USE_DETECT) { - left_edge = MIN(left_edge, file->content_inspected); + if (!g_detect_disabled) { + left_edge = MIN(left_edge, file->content_inspected); /* if file has inspect window and min size set, we * do some house keeping here */ if (file->inspect_window != 0 && file->inspect_min_size != 0) { @@ -441,13 +441,11 @@ void FilePrintFlags(const File *file) "FILE_STORE %s " "FILE_STORED %s " "FILE_NOTRACK %s " - "FILE_USE_DETECT %s " "FILE_HAS_GAPS %s", file, file->flags, P(file, FILE_TRUNCATED), P(file, FILE_NOMAGIC), P(file, FILE_NOMD5), P(file, FILE_MD5), P(file, FILE_NOSHA1), P(file, FILE_SHA1), P(file, FILE_NOSHA256), P(file, FILE_SHA256), P(file, FILE_LOGGED), P(file, FILE_NOSTORE), P(file, FILE_STORE), - P(file, FILE_STORED), P(file, FILE_NOTRACK), P(file, FILE_USE_DETECT), - P(file, FILE_HAS_GAPS)); + P(file, FILE_STORED), P(file, FILE_NOTRACK), P(file, FILE_HAS_GAPS)); } #undef P #endif @@ -727,8 +725,7 @@ static int FileAppendDataDo( SCReturnInt(-1); } - if ((ff->flags & FILE_USE_DETECT) == 0 && - FileStoreNoStoreCheck(ff) == 1) { + if (g_detect_disabled && FileStoreNoStoreCheck(ff) == 1) { int hash_done = 0; /* no storage but forced hashing */ if (ff->md5_ctx) { @@ -941,10 +938,6 @@ static File *FileOpenFile(FileContainer *ffc, const StreamingBufferConfig *sbcfg SCLogDebug("not doing sha256 for this file"); ff->flags |= FILE_NOSHA256; } - if (!g_detect_disabled && flags & FILE_USE_DETECT) { - SCLogDebug("considering content_inspect tracker when pruning"); - ff->flags |= FILE_USE_DETECT; - } if (!(ff->flags & FILE_NOMD5) || g_file_force_md5) { ff->md5_ctx = SCMd5New();