]> git.ipfire.org Git - thirdparty/snort3.git/commitdiff
Pull request #3364: file_api: Handling user_file_data cleanup
authorBhargava Jandhyala (bjandhya) <bjandhya@cisco.com>
Wed, 6 Apr 2022 07:26:36 +0000 (07:26 +0000)
committerBhargava Jandhyala (bjandhya) <bjandhya@cisco.com>
Wed, 6 Apr 2022 07:26:36 +0000 (07:26 +0000)
Merge in SNORT/snort3 from ~UMUNNIKR/snort3:file_bat_bqt to master

Squashed commit of the following:

commit b41c170a819ad1c542a98cba0708eb25da1d6bf6
Author: Unnikrishnan M <umunnikr@cisco.com>
Date:   Tue Apr 5 15:42:04 2022 +0530

    file_api: Handling user_file_data cleanup

src/file_api/file_cache.cc
src/file_api/file_flows.cc

index 13263616ab4c7ef1c3af0095635ddb41ed38d535..1960a3f3379fde3cf48c732dcb0ce565cb17b260 100644 (file)
@@ -238,7 +238,9 @@ FileVerdict FileCache::check_verdict(Packet* p, FileInfo* file,
 
     if ( file->get_file_sig_sha256() and verdict == FILE_VERDICT_UNKNOWN )
     {
+        file->user_file_data_mutex.lock();
         verdict = policy->signature_lookup(p, file);
+        file->user_file_data_mutex.unlock();
     }
 
     FILE_DEBUG(file_trace, DEFAULT_TRACE_OPTION_ID, TRACE_DEBUG_LEVEL, p,
index 124b0cfcb5e43d6634cc1b6cdd34eff9f30755cd..1d84a212cc8f9701bd7f243ccac0043e3a9b1961 100644 (file)
@@ -114,8 +114,10 @@ void FileFlows::handle_retransmit(Packet* p)
             file_got = file_cache->get_file(flow, pending_file_id, false);
         if (file_got and file_got->get_file_data())
         {
+            file_got->user_file_data_mutex.lock();
             file->set_file_data(file_got->get_file_data());
             file_got->set_file_data(nullptr);
+            file_got->user_file_data_mutex.unlock();
         }
     }
 
@@ -209,8 +211,10 @@ FileFlows::~FileFlows()
 
     if (file_got and (file_got->verdict == FILE_VERDICT_PENDING))
     {
+        file_got->user_file_data_mutex.lock();
         delete (file_got->get_file_data());
         file_got->set_file_data(nullptr);
+        file_got->user_file_data_mutex.unlock();
     }
 
     delete(main_context);