]> git.ipfire.org Git - thirdparty/snort3.git/commitdiff
Merge pull request #1313 in SNORT/snort3 from peg_count_data_race to master
authorMike Stepanek (mstepane) <mstepane@cisco.com>
Tue, 24 Jul 2018 17:09:15 +0000 (13:09 -0400)
committerMike Stepanek (mstepane) <mstepane@cisco.com>
Tue, 24 Jul 2018 17:09:15 +0000 (13:09 -0400)
Squashed commit of the following:

commit 5c2f0693abbb9b611239c11e555ca4425afd4b4f
Author: Masud Hasan <mashasan@cisco.com>
Date:   Mon Jul 23 13:50:22 2018 -0400

    appid: Avoiding peg count data race

src/network_inspectors/appid/appid_peg_counts.cc
src/network_inspectors/appid/appid_peg_counts.h

index 5e1539c6a06d5ff99f199c57db1fb2d0f32880cd..682cedfafa34598469fa65922823486b75278479 100644 (file)
@@ -34,14 +34,12 @@ std::map<AppId, uint32_t> AppIdPegCounts::appid_detector_pegs_idx;
 std::vector<std::string> AppIdPegCounts::appid_detectors_info;
 THREAD_LOCAL std::vector<AppIdPegCounts::AppIdDynamicPeg>* AppIdPegCounts::appid_peg_counts;
 AppIdPegCounts::AppIdDynamicPeg AppIdPegCounts::appid_dynamic_sum[SF_APPID_MAX + 1];
-uint32_t AppIdPegCounts::unknown_app_idx;
 
 void AppIdPegCounts::init_pegs()
 {
     AppIdPegCounts::AppIdDynamicPeg zeroed_peg = AppIdPegCounts::AppIdDynamicPeg();
     appid_peg_counts = new std::vector<AppIdPegCounts::AppIdDynamicPeg>(
         appid_detectors_info.size() + 1, zeroed_peg);
-    AppIdPegCounts::unknown_app_idx = appid_detectors_info.size();
 }
 
 void AppIdPegCounts::cleanup_pegs()
@@ -113,7 +111,7 @@ uint32_t AppIdPegCounts::get_stats_index(AppId id)
     if ( stats_idx_it != appid_detector_pegs_idx.end() )
         return stats_idx_it->second;
     else
-        return AppIdPegCounts::unknown_app_idx;
+        return appid_detectors_info.size();
 }
 
 void AppIdPegCounts::print()
index f4246efbaae22ec48931e64f3781cd43261cfc91..15e8b5ca6c22966825e85b8683f3b815948d91ce 100644 (file)
@@ -88,13 +88,13 @@ public:
 
     static void inc_incompatible_count(AppId id)
     {
-        if ( appid_detector_pegs_idx[id] != unknown_app_idx)
+        if ( appid_detector_pegs_idx[id] != appid_detectors_info.size() )
             (*appid_peg_counts)[appid_detector_pegs_idx[id]].stats[DetectorPegs::INCOMPATIBLE]++;
     }
 
     static void inc_failed_count(AppId id)
     {
-        if ( appid_detector_pegs_idx[id] != unknown_app_idx)
+        if ( appid_detector_pegs_idx[id] != appid_detectors_info.size() )
             (*appid_peg_counts)[appid_detector_pegs_idx[id]].stats[DetectorPegs::FAILED]++;
     }
 
@@ -102,7 +102,6 @@ public:
     static void print();
 
 private:
-    static uint32_t unknown_app_idx;
     static std::map<AppId, uint32_t> appid_detector_pegs_idx;
     static std::vector<std::string> appid_detectors_info;
     static AppIdDynamicPeg appid_dynamic_sum[SF_APPID_MAX+1];