]> git.ipfire.org Git - thirdparty/suricata.git/commitdiff
detect: break apart sigtable setup and initialization
authorJason Ish <jason.ish@oisf.net>
Thu, 17 Oct 2024 19:16:38 +0000 (13:16 -0600)
committerVictor Julien <victor@inliniac.net>
Wed, 13 Nov 2024 09:53:59 +0000 (10:53 +0100)
Allows initialization to be done early, so the table is ready for
dynamic registration by plugins which are loaded before signature
setup.

src/detect-engine-register.c
src/detect-engine-register.h
src/runmode-unittests.c
src/suricata.c
src/tests/fuzz/fuzz_siginit.c

index 37fbc98d8597d05611a850fdd1a8e1dfb8c72dd2..903cc158cf5fe5a8b2577217846713d04ba61009 100644 (file)
@@ -439,7 +439,7 @@ void SigTableCleanup(void)
     }
 }
 
-void SigTableSetup(void)
+void SigTableInit(void)
 {
     if (sigmatch_table == NULL) {
         DETECT_TBLSIZE = DETECT_TBLSIZE_STATIC + DETECT_TBLSIZE_STEP;
@@ -447,10 +447,12 @@ void SigTableSetup(void)
         if (sigmatch_table == NULL) {
             DETECT_TBLSIZE = 0;
             FatalError("Could not allocate sigmatch_table");
-            return;
         }
     }
+}
 
+void SigTableSetup(void)
+{
     DetectSidRegister();
     DetectPriorityRegister();
     DetectPrefilterRegister();
index c9134c77b83a512065c006725a10537ed45b1d1c..db4cd957af9d8a7b563041ffb51c623650a8c18d 100644 (file)
@@ -338,6 +338,7 @@ extern int DETECT_TBLSIZE_IDX;
 #define DETECT_TBLSIZE_STEP 256
 int SigTableList(const char *keyword);
 void SigTableCleanup(void);
+void SigTableInit(void);
 void SigTableSetup(void);
 void SigTableRegisterTests(void);
 
index e116e86d5be5c3ff235a9d2791709ee4f47a097c..35780ab101a0d3184f2e6aef2937e15e1b207128 100644 (file)
@@ -240,6 +240,7 @@ void RunUnittests(int list_unittests, const char *regex_arg)
     AppLayerSetup();
 
     /* hardcoded initialization code */
+    SigTableInit();
     SigTableSetup(); /* load the rule keywords */
     TmqhSetup();
 
index 6bdd6edb90f6526e0120b5e861de3a99c61ccd85..ee9dfc0b5b694f8428732ac6a3c9532d4fa41b01 100644 (file)
@@ -2670,6 +2670,8 @@ int PostConfLoadedSetup(SCInstance *suri)
 
     MacSetRegisterFlowStorage();
 
+    SigTableInit();
+
 #ifdef HAVE_PLUGINS
     SCPluginsLoad(suri->capture_plugin_name, suri->capture_plugin_args);
 #endif
index a98148cfac8d762011fd3d39f30d4261ee30c509..a50e1fd67ebf3f0180c0a7753e06791afca6b794 100644 (file)
@@ -27,6 +27,7 @@ int LLVMFuzzerTestOneInput(const uint8_t *data, size_t size)
         MpmTableSetup();
         SpmTableSetup();
         EngineModeSetIDS();
+        SigTableInit();
         SigTableSetup();
     }
     if (cnt++ == 1024) {