From: Michael Altizer (mialtize) Date: Tue, 24 Sep 2019 16:55:31 +0000 (-0400) Subject: Merge pull request #1761 in SNORT/snort3 from ~SBAIGAL/snort3:revert_map_change to... X-Git-Tag: 3.0.0-262~26 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=fc26d6b71f6f503216f3d19b705f95df2a024d1d;p=thirdparty%2Fsnort3.git Merge pull request #1761 in SNORT/snort3 from ~SBAIGAL/snort3:revert_map_change to master Squashed commit of the following: commit 2bd74d091178b75253934e1f51a7bb5bfc9130bf Author: Steven Baigal (sbaigal) Date: Mon Sep 23 20:51:16 2019 -0400 binder: remove global check for stream inspectors and revert module_map changes --- diff --git a/src/managers/module_manager.cc b/src/managers/module_manager.cc index ab718f9aa..7e2b3a901 100644 --- a/src/managers/module_manager.cc +++ b/src/managers/module_manager.cc @@ -68,7 +68,6 @@ struct ModHook typedef std::list ModuleList; static ModuleList s_modules; -static std::unordered_map s_module_map; static unsigned s_errors = 0; std::set ModuleManager::gids; @@ -872,7 +871,6 @@ void ModuleManager::add_module(Module* m, const BaseApi* b) { ModHook* mh = new ModHook(m, b); s_modules.emplace_back(mh); - s_module_map[std::string(m->get_name())] = m; Profiler::register_module(m); @@ -882,7 +880,11 @@ void ModuleManager::add_module(Module* m, const BaseApi* b) Module* ModuleManager::get_module(const char* s) { - return s_module_map[std::string(s)]; + for ( auto p : s_modules ) + if ( !strcmp(p->mod->get_name(), s) ) + return p->mod; + + return nullptr; } Module* ModuleManager::get_default_module(const char* s, SnortConfig* sc) diff --git a/src/network_inspectors/binder/binder.cc b/src/network_inspectors/binder/binder.cc index 5829b73a1..a5bbc198b 100644 --- a/src/network_inspectors/binder/binder.cc +++ b/src/network_inspectors/binder/binder.cc @@ -398,15 +398,10 @@ bool Binding::check_all(const Flow* flow, Packet* p) const //------------------------------------------------------------------------- // helpers //------------------------------------------------------------------------- -static bool is_global(const char* key) -{ - Module* m = ModuleManager::get_module(key); - return m ? m->get_usage() == Module::GLOBAL : false; -} static void set_session(Flow* flow, const char* key) { - Inspector* pin = InspectorManager::get_inspector(key, is_global(key)); + Inspector* pin = InspectorManager::get_inspector(key); if ( pin ) { @@ -436,7 +431,7 @@ static Inspector* get_gadget(Flow* flow) const char* s = SnortConfig::get_conf()->proto_ref->get_name(flow->ssn_state.snort_protocol_id); - return InspectorManager::get_inspector(s, is_global(s)); + return InspectorManager::get_inspector(s); } //------------------------------------------------------------------------- @@ -475,6 +470,7 @@ bool Stuff::update(Binding* pb) action = pb->use.action; return true; } + switch ( pb->use.what ) { case BindUse::BW_NONE: @@ -842,7 +838,9 @@ void Binder::set_binding(SnortConfig*, Binding* pb) else key = pb->use.svc.c_str(); - if ( (pb->use.object = InspectorManager::get_inspector(key, is_global(key))) ) + Module* m = ModuleManager::get_module(key); + bool is_global = m ? m->get_usage() == Module::GLOBAL : false; + if ( (pb->use.object = InspectorManager::get_inspector(key, is_global)) ) { switch ( ((Inspector*)pb->use.object)->get_api()->type ) {