]> git.ipfire.org Git - thirdparty/snort3.git/commitdiff
Pull request #3807: appid: Making free_servicematch_list thread local
authorSreeja Athirkandathil Narayanan (sathirka) <sathirka@cisco.com>
Tue, 18 Apr 2023 19:31:48 +0000 (19:31 +0000)
committerSreeja Athirkandathil Narayanan (sathirka) <sathirka@cisco.com>
Tue, 18 Apr 2023 19:31:48 +0000 (19:31 +0000)
Merge in SNORT/snort3 from ~OSTEPANO/snort3:csd_pattern_search_crash to master

Squashed commit of the following:

commit d8dc69deffebdb3205b7a11a9e0d35a72223228c
Author: Oleksandr Stepanov <ostepano@cisco.com>
Date:   Fri Apr 14 09:54:00 2023 -0400

    appid: Making free_servicematch_list thread local

src/network_inspectors/appid/detector_plugins/detector_pattern.cc

index b371119bfc27e063a0e988256f839e49d87b1bb1..e56e7aeb5f28aabab8ff7af270afbdb1841467db 100644 (file)
@@ -145,7 +145,7 @@ struct PServiceMatch
     Pattern* data;
 };
 
-static PServiceMatch* free_servicematch_list;
+static THREAD_LOCAL PServiceMatch* free_servicematch_list;
 
 static int pattern_match(void* id, void*, int match_end_pos, void* data, void*)
 {
@@ -263,6 +263,13 @@ static int csd_pattern_tree_search(const uint8_t* data, uint16_t size, SearchToo
         free_servicematch_list = sm;
     }
 
+    while (free_servicematch_list)
+    {
+        auto tmp = free_servicematch_list;
+        free_servicematch_list = free_servicematch_list->next;
+        snort_free(tmp);
+    }
+
     if (ps == nullptr)
         return 0;