From be9767c8cb2acc7c94bbbb8aee585d43e1e82057 Mon Sep 17 00:00:00 2001 From: "Michael Altizer (mialtize)" Date: Wed, 20 Jun 2018 16:26:09 -0400 Subject: [PATCH] Merge pull request #1279 in SNORT/snort3 from snort2lua_nap_merge to master Squashed commit of the following: commit 116a11685c1ba81921f808abf0a6af8fe5e4a48b Author: Carter Waxman Date: Wed Jun 13 16:39:17 2018 -0400 snort2lua: merge multiple nap rules with the same id --- tools/snort2lua/preprocessor_states/pps_nap_selector.cc | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/tools/snort2lua/preprocessor_states/pps_nap_selector.cc b/tools/snort2lua/preprocessor_states/pps_nap_selector.cc index fe0a35f27..72ccf3e2f 100644 --- a/tools/snort2lua/preprocessor_states/pps_nap_selector.cc +++ b/tools/snort2lua/preprocessor_states/pps_nap_selector.cc @@ -19,6 +19,7 @@ #include #include +#include #include #include "conversion_state.h" @@ -48,7 +49,7 @@ public: } unsigned rule_id; - if ( data_stream >> rule_id ) // is this a or config + if ( data_stream >> rule_id ) // is this a comment or config { std::string action; std::string src_zone, src_net, src_netmask, src_port; @@ -104,7 +105,8 @@ public: return false; } - auto& bind = cv.make_pending_binder(policy_id); + auto seen = rule_map.find(rule_id); + auto& bind = seen == rule_map.end() ? cv.make_pending_binder(policy_id) : *seen->second; bind.set_priority(order++); @@ -131,6 +133,8 @@ public: if ( protocol != "any" ) bind.set_when_proto(protocol); + + rule_map[rule_id] = &bind; } else { @@ -152,6 +156,7 @@ public: private: unsigned order = 0; + std::unordered_map rule_map; }; class NapSelectorState : public ConversionState -- 2.47.3