From 66fccbda6c736cb2ec6c192064f4231c169312c5 Mon Sep 17 00:00:00 2001 From: "Jose Cano -X (jcanogom - SOFTSERVE INC at Cisco)" Date: Mon, 7 Jul 2025 13:05:08 +0000 Subject: [PATCH] Pull request #4786: main: Do not start Analyzer if codec manager doesn't match any codec Merge in SNORT/snort3 from ~JCANOGOM/snort3:codec_config_do_stop_snort to master Squashed commit of the following: commit f30ded789e6b289fa665f2d9f87ea6918db85af8 Author: Jose Cano Date: Tue Jun 24 18:01:19 2025 -0400 main: Do not start Analyzer if codec manager doesn't match any codec --- src/main/analyzer.cc | 10 ++++++++++ src/main/test/distill_verdict_stubs.h | 1 + src/managers/codec_manager.cc | 7 ++++++- src/managers/codec_manager.h | 2 ++ 4 files changed, 19 insertions(+), 1 deletion(-) diff --git a/src/main/analyzer.cc b/src/main/analyzer.cc index 123e9fb53..c5c953f2f 100644 --- a/src/main/analyzer.cc +++ b/src/main/analyzer.cc @@ -998,6 +998,16 @@ void Analyzer::run(bool paused) { assert(state == State::STARTED); init_unprivileged(); + + uint8_t codec_dlt = CodecManager::get_grinder(); + if (codec_dlt == 0) + { + ErrorMessage("No codec for DAQ base protocol, stopping packet processing\n"); + exit_requested = true; + set_state(State::FAILED); + return; + } + if ( paused ) set_state(State::PAUSED); else diff --git a/src/main/test/distill_verdict_stubs.h b/src/main/test/distill_verdict_stubs.h index 79d35c327..3bcd6ffa2 100644 --- a/src/main/test/distill_verdict_stubs.h +++ b/src/main/test/distill_verdict_stubs.h @@ -109,6 +109,7 @@ void SideChannelManager::thread_init() { } void SideChannelManager::thread_term() { } void CodecManager::thread_init() { } void CodecManager::thread_term() { } +uint8_t CodecManager::get_grinder() { return 0; } void EventManager::open_outputs() { } void EventManager::close_outputs() { } void EventManager::reload_outputs() { } diff --git a/src/managers/codec_manager.cc b/src/managers/codec_manager.cc index a33e953c6..64217bfd0 100644 --- a/src/managers/codec_manager.cc +++ b/src/managers/codec_manager.cc @@ -221,7 +221,7 @@ void CodecManager::thread_init() } if (!grinder) - ParseError("Unable to find a Codec with data link type %d", daq_dlt); + ErrorMessage("No codec found for data link type %d\n", daq_dlt); } void CodecManager::thread_term() @@ -243,3 +243,8 @@ void CodecManager::dump_plugins() d.dump(wrap.api->base.name, wrap.api->base.version); } +uint8_t CodecManager::get_grinder() +{ + return grinder; +} + diff --git a/src/managers/codec_manager.h b/src/managers/codec_manager.h index f5526673e..0b9423bfa 100644 --- a/src/managers/codec_manager.h +++ b/src/managers/codec_manager.h @@ -64,6 +64,8 @@ public: static void thread_term(); // print all of the codec plugins static void dump_plugins(); + // get the current grinder + static uint8_t get_grinder(); private: struct CodecApiWrapper; -- 2.47.3