From: Jason Ish Date: Wed, 20 Nov 2024 16:04:46 +0000 (-0600) Subject: sigtable: add function to test for a keyword X-Git-Tag: suricata-8.0.0-beta1~672 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=8bcc844b6f2548f7c767d766b98b53232eccf952;p=thirdparty%2Fsuricata.git sigtable: add function to test for a keyword To be used by the requires keyword to check for keyword support. Ticket: #7403 --- diff --git a/src/detect-engine-register.c b/src/detect-engine-register.c index 903cc158cf..9bddf0fd84 100644 --- a/src/detect-engine-register.c +++ b/src/detect-engine-register.c @@ -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; diff --git a/src/detect-engine-register.h b/src/detect-engine-register.h index e5f550be75..b7a0299985 100644 --- a/src/detect-engine-register.h +++ b/src/detect-engine-register.h @@ -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 */