]> git.ipfire.org Git - thirdparty/suricata.git/commitdiff
sigtable: add function to test for a keyword
authorJason Ish <jason.ish@oisf.net>
Wed, 20 Nov 2024 16:04:46 +0000 (10:04 -0600)
committerVictor Julien <victor@inliniac.net>
Mon, 2 Dec 2024 11:33:36 +0000 (12:33 +0100)
To be used by the requires keyword to check for keyword support.

Ticket: #7403

src/detect-engine-register.c
src/detect-engine-register.h

index 903cc158cf5fe5a8b2577217846713d04ba61009..9bddf0fd84372117b982b8bbd26ac2bac487d7bc 100644 (file)
@@ -347,6 +347,28 @@ static void SigMultilinePrint(int i, const char *prefix)
     printf("\n");
 }
 
+/** \brief Check if a keyword exists. */
+bool SigTableHasKeyword(const char *keyword)
+{
+    for (int i = 0; i < DETECT_TBLSIZE; i++) {
+        if (sigmatch_table[i].flags & SIGMATCH_NOT_BUILT) {
+            continue;
+        }
+
+        const char *name = sigmatch_table[i].name;
+
+        if (name == NULL || strlen(name) == 0) {
+            continue;
+        }
+
+        if (strcmp(keyword, name) == 0) {
+            return true;
+        }
+    }
+
+    return false;
+}
+
 int SigTableList(const char *keyword)
 {
     size_t size = DETECT_TBLSIZE;
index e5f550be7547a1b62fdcf286eb6bb587b652f907..b7a029998555901596b1a580e4628d3c0e28aa6c 100644 (file)
@@ -24,6 +24,8 @@
 #ifndef SURICATA_DETECT_ENGINE_REGISTER_H
 #define SURICATA_DETECT_ENGINE_REGISTER_H
 
+#include "suricata-common.h"
+
 enum DetectKeywordId {
     DETECT_SID,
     DETECT_PRIORITY,
@@ -342,5 +344,6 @@ void SigTableCleanup(void);
 void SigTableInit(void);
 void SigTableSetup(void);
 void SigTableRegisterTests(void);
+bool SigTableHasKeyword(const char *keyword);
 
 #endif /* SURICATA_DETECT_ENGINE_REGISTER_H */