From: Bhargava Jandhyala (bjandhya) Date: Mon, 21 Mar 2022 06:44:26 +0000 (+0000) Subject: Pull request #3310: file_api: Handling user_file_data cleanup X-Git-Tag: 3.1.26.0~5 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=2206d914cf6d3e6c38e91e90f67b59945cc1238a;p=thirdparty%2Fsnort3.git Pull request #3310: file_api: Handling user_file_data cleanup Merge in SNORT/snort3 from ~VKAMBALA/snort3:user_file_data to master Squashed commit of the following: commit be6525d736b93e5a07d22b76e55800a06532b10a Author: krishnakanth Date: Thu Mar 17 17:32:01 2022 +0530 file_api: Handling user_file_data cleanup --- diff --git a/src/file_api/file_cache.cc b/src/file_api/file_cache.cc index 981e290e7..13263616a 100644 --- a/src/file_api/file_cache.cc +++ b/src/file_api/file_cache.cc @@ -224,7 +224,10 @@ FileVerdict FileCache::check_verdict(Packet* p, FileInfo* file, { assert(file); + file->user_file_data_mutex.lock(); FileVerdict verdict = policy->type_lookup(p, file); + file->user_file_data_mutex.unlock(); + FILE_DEBUG(file_trace, DEFAULT_TRACE_OPTION_ID, TRACE_DEBUG_LEVEL, p, "check_verdict:verdict after type lookup %d\n", verdict); diff --git a/src/file_api/file_lib.cc b/src/file_api/file_lib.cc index 03edbeb7e..61bacf00b 100644 --- a/src/file_api/file_lib.cc +++ b/src/file_api/file_lib.cc @@ -94,8 +94,10 @@ FileInfo::~FileInfo () { if (user_file_data) { + user_file_data_mutex.lock(); delete user_file_data; set_file_data(nullptr); + user_file_data_mutex.unlock(); } if (sha256) diff --git a/src/file_api/file_lib.h b/src/file_api/file_lib.h index c1ae21f15..7c9ab5da1 100644 --- a/src/file_api/file_lib.h +++ b/src/file_api/file_lib.h @@ -91,6 +91,7 @@ public: FileVerdict verdict = FILE_VERDICT_UNKNOWN; bool processing_complete = false; + std::mutex user_file_data_mutex; struct timeval pending_expire_time = {0, 0}; protected: @@ -109,7 +110,6 @@ protected: bool file_capture_enabled = false; FileState file_state = { FILE_CAPTURE_SUCCESS, FILE_SIG_PROCESSING }; uint32_t policy_id = 0; - std::mutex user_file_data_mutex; UserFileDataBase* user_file_data = nullptr; private: