]> git.ipfire.org Git - thirdparty/snort3.git/commitdiff
Pull request #4786: main: Do not start Analyzer if codec manager doesn't match any...
authorJose Cano -X (jcanogom - SOFTSERVE INC at Cisco) <jcanogom@cisco.com>
Mon, 7 Jul 2025 13:05:08 +0000 (13:05 +0000)
committerRayen Mohanty (ramohant) <ramohant@cisco.com>
Mon, 7 Jul 2025 13:05:08 +0000 (13:05 +0000)
Merge in SNORT/snort3 from ~JCANOGOM/snort3:codec_config_do_stop_snort to master

Squashed commit of the following:

commit f30ded789e6b289fa665f2d9f87ea6918db85af8
Author: Jose Cano <jcanogom@cisco.com>
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
src/main/test/distill_verdict_stubs.h
src/managers/codec_manager.cc
src/managers/codec_manager.h

index 123e9fb539cdffef1dc4405231d4603b91ce95f6..c5c953f2f0f906feadfd436d264953345377c546 100644 (file)
@@ -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
index 79d35c32736a7ebb530dc2f8b61d8f271968c644..3bcd6ffa26e0a69d65bb7d6fb68668231a895e04 100644 (file)
@@ -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() { }
index a33e953c6d9cefda041d7165826d0726e759ec0e..64217bfd0fa3c5dcb61315dc04527b2cb4cd8d42 100644 (file)
@@ -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;
+}
+
index f5526673e08d3ecc15c580d6d773d9772b0d4519..0b9423bfa8d93ffd597c6399e37eb2265487c81b 100644 (file)
@@ -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;