]> git.ipfire.org Git - thirdparty/snort3.git/commitdiff
Pull request #3310: file_api: Handling user_file_data cleanup
authorBhargava Jandhyala (bjandhya) <bjandhya@cisco.com>
Mon, 21 Mar 2022 06:44:26 +0000 (06:44 +0000)
committerBhargava Jandhyala (bjandhya) <bjandhya@cisco.com>
Mon, 21 Mar 2022 06:44:26 +0000 (06:44 +0000)
Merge in SNORT/snort3 from ~VKAMBALA/snort3:user_file_data to master

Squashed commit of the following:

commit be6525d736b93e5a07d22b76e55800a06532b10a
Author: krishnakanth <vkambala@cisco.com>
Date:   Thu Mar 17 17:32:01 2022 +0530

    file_api: Handling user_file_data cleanup

src/file_api/file_cache.cc
src/file_api/file_lib.cc
src/file_api/file_lib.h

index 981e290e75e10ddfaf175439718c599ec9230045..13263616ab4c7ef1c3af0095635ddb41ed38d535 100644 (file)
@@ -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);
 
index 03edbeb7e7ca3f5c0df10651a41ff300e76a886a..61bacf00b6a5f0e0f08db5e77d141d6275d4505a 100644 (file)
@@ -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)
index c1ae21f15066972023618c4dd1b6ecfc4d2f58af..7c9ab5da1b546501b0c9590fc2a9c08f35cc2cdd 100644 (file)
@@ -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: