From: Mike Stepanek (mstepane) Date: Tue, 24 Jul 2018 17:09:15 +0000 (-0400) Subject: Merge pull request #1313 in SNORT/snort3 from peg_count_data_race to master X-Git-Tag: 3.0.0-246~16 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=5553536e7a107c51465b005a1332715a40f277ad;p=thirdparty%2Fsnort3.git Merge pull request #1313 in SNORT/snort3 from peg_count_data_race to master Squashed commit of the following: commit 5c2f0693abbb9b611239c11e555ca4425afd4b4f Author: Masud Hasan Date: Mon Jul 23 13:50:22 2018 -0400 appid: Avoiding peg count data race --- diff --git a/src/network_inspectors/appid/appid_peg_counts.cc b/src/network_inspectors/appid/appid_peg_counts.cc index 5e1539c6a..682cedfaf 100644 --- a/src/network_inspectors/appid/appid_peg_counts.cc +++ b/src/network_inspectors/appid/appid_peg_counts.cc @@ -34,14 +34,12 @@ std::map AppIdPegCounts::appid_detector_pegs_idx; std::vector AppIdPegCounts::appid_detectors_info; THREAD_LOCAL std::vector* 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( 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() diff --git a/src/network_inspectors/appid/appid_peg_counts.h b/src/network_inspectors/appid/appid_peg_counts.h index f4246efba..15e8b5ca6 100644 --- a/src/network_inspectors/appid/appid_peg_counts.h +++ b/src/network_inspectors/appid/appid_peg_counts.h @@ -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_detector_pegs_idx; static std::vector appid_detectors_info; static AppIdDynamicPeg appid_dynamic_sum[SF_APPID_MAX+1];