From: Shravan Rangarajuvenkata (shrarang) Date: Fri, 8 May 2020 22:42:41 +0000 (+0000) Subject: Merge pull request #2200 in SNORT/snort3 from ~SATHIRKA/snort3:appid_core_fix to... X-Git-Tag: 3.0.1-4~14 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=a7d80792753bb1b794e3db0f3718606258560a6f;p=thirdparty%2Fsnort3.git Merge pull request #2200 in SNORT/snort3 from ~SATHIRKA/snort3:appid_core_fix to master Squashed commit of the following: commit 08c9f1bf6bc7847d7ee85f7785af0e03deb77ecf Author: Sreeja Athirkandathil Narayanan Date: Tue May 5 14:32:29 2020 -0400 appid: Get inspector for the current snort config during reload --- diff --git a/src/network_inspectors/appid/appid_detector.cc b/src/network_inspectors/appid/appid_detector.cc index 5a815bc11..ad4483a9b 100644 --- a/src/network_inspectors/appid/appid_detector.cc +++ b/src/network_inspectors/appid/appid_detector.cc @@ -49,7 +49,8 @@ int AppIdDetector::initialize() if (!appid_registry.empty()) { // FIXIT-M: RELOAD - to support ODP reload, store ODP context in AppIdDetector - AppIdInspector* inspector = (AppIdInspector*) InspectorManager::get_inspector(MOD_NAME, true); + AppIdInspector* inspector = (AppIdInspector*) InspectorManager::get_inspector(MOD_NAME); + assert(inspector); AppIdContext& ctxt = inspector->get_ctxt(); for (auto& id : appid_registry) register_appid(id.appId, id.additionalInfo, ctxt.get_odp_ctxt()); diff --git a/src/network_inspectors/appid/appid_module.cc b/src/network_inspectors/appid/appid_module.cc index 0035a99ea..15a500682 100644 --- a/src/network_inspectors/appid/appid_module.cc +++ b/src/network_inspectors/appid/appid_module.cc @@ -137,7 +137,8 @@ private: bool ACThirdPartyAppIdContextSwap::execute(Analyzer&, void**) { assert(tp_appid_thread_ctxt); - AppIdInspector* inspector = (AppIdInspector*) InspectorManager::get_inspector(MOD_NAME, true); + AppIdInspector* inspector = (AppIdInspector*) InspectorManager::get_inspector(MOD_NAME); + assert(inspector); ThirdPartyAppIdContext* tp_appid_ctxt = inspector->get_ctxt().get_tp_appid_ctxt(); assert(tp_appid_thread_ctxt != tp_appid_ctxt); LogMessage("== swapping third-party configuration\n"); @@ -206,7 +207,12 @@ static int reload_third_party(lua_State*) } Swapper::set_reload_in_progress(true); LogMessage(".. reloading third-party\n"); - AppIdInspector* inspector = (AppIdInspector*) InspectorManager::get_inspector(MOD_NAME, true); + AppIdInspector* inspector = (AppIdInspector*) InspectorManager::get_inspector(MOD_NAME); + if (!inspector) + { + LogMessage("== reload third-party failed - appid not enabled\n"); + return 0; + } AppIdContext& ctxt = inspector->get_ctxt(); ThirdPartyAppIdContext* old_ctxt = ctxt.get_tp_appid_ctxt(); if (!old_ctxt) diff --git a/src/network_inspectors/appid/detector_plugins/detector_pattern.cc b/src/network_inspectors/appid/detector_plugins/detector_pattern.cc index 962a4a435..1d0f09b6a 100644 --- a/src/network_inspectors/appid/detector_plugins/detector_pattern.cc +++ b/src/network_inspectors/appid/detector_plugins/detector_pattern.cc @@ -118,7 +118,8 @@ static void read_patterns(PortPatternNode* portPatternList, PatternService** ser ps->pattern = pattern; // FIXIT-M: Tp support ODP reload, store ODP context in PatternService - AppIdInspector* inspector = (AppIdInspector*) InspectorManager::get_inspector(MOD_NAME, true); + AppIdInspector* inspector = (AppIdInspector*) InspectorManager::get_inspector(MOD_NAME); + assert(inspector); AppIdContext& ctxt = inspector->get_ctxt(); ctxt.get_odp_ctxt().get_app_info_mgr().set_app_info_active(ps->id); diff --git a/src/network_inspectors/appid/host_port_app_cache.cc b/src/network_inspectors/appid/host_port_app_cache.cc index 67e601aec..0e875be8b 100644 --- a/src/network_inspectors/appid/host_port_app_cache.cc +++ b/src/network_inspectors/appid/host_port_app_cache.cc @@ -58,7 +58,8 @@ bool HostPortCache::add(const SfIp* ip, uint16_t port, IpProtocol proto, unsigne HostPortVal hv; hk.ip = *ip; - AppIdInspector* inspector = (AppIdInspector*) InspectorManager::get_inspector(MOD_NAME, true); + AppIdInspector* inspector = (AppIdInspector*) InspectorManager::get_inspector(MOD_NAME); + assert(inspector); AppIdContext& ctxt = inspector->get_ctxt(); hk.port = (ctxt.get_odp_ctxt().allow_port_wildcard_host_cache)? 0 : port; hk.proto = proto;