]> git.ipfire.org Git - thirdparty/suricata.git/commitdiff
detect: move lua smtp support to dynamic list
authorVictor Julien <victor@inliniac.net>
Thu, 22 Dec 2016 13:48:53 +0000 (14:48 +0100)
committerVictor Julien <victor@inliniac.net>
Thu, 16 Feb 2017 09:35:42 +0000 (10:35 +0100)
src/detect-lua.c

index 4d80841623a20b337a8f13e83d389865abec7472..8c9a4070ff2d769b00828c7e10d5b9a824a6b0cd 100644 (file)
@@ -98,6 +98,13 @@ static int DetectLuaAppTxMatch (ThreadVars *t, DetectEngineThreadCtx *det_ctx,
 static int DetectLuaSetup (DetectEngineCtx *, Signature *, char *);
 static void DetectLuaRegisterTests(void);
 static void DetectLuaFree(void *);
+static int g_smtp_generic_list_id = 0;
+
+static int InspectSmtpGeneric(ThreadVars *tv,
+        DetectEngineCtx *de_ctx, DetectEngineThreadCtx *det_ctx,
+        const Signature *s, const SigMatchData *smd,
+        Flow *f, uint8_t flags, void *alstate,
+        void *txv, uint64_t tx_id);
 
 /**
  * \brief Registration function for keyword: lua
@@ -115,10 +122,29 @@ void DetectLuaRegister(void)
     sigmatch_table[DETECT_LUA].Free  = DetectLuaFree;
     sigmatch_table[DETECT_LUA].RegisterTests = DetectLuaRegisterTests;
 
+    g_smtp_generic_list_id = DetectBufferTypeRegister("smtp_generic");
+
+    DetectAppLayerInspectEngineRegister("smtp_generic",
+            ALPROTO_SMTP, SIG_FLAG_TOSERVER,
+            InspectSmtpGeneric);
+    DetectAppLayerInspectEngineRegister("smtp_generic",
+            ALPROTO_SMTP, SIG_FLAG_TOCLIENT,
+            InspectSmtpGeneric);
+
        SCLogDebug("registering lua rule option");
     return;
 }
 
+static int InspectSmtpGeneric(ThreadVars *tv,
+        DetectEngineCtx *de_ctx, DetectEngineThreadCtx *det_ctx,
+        const Signature *s, const SigMatchData *smd,
+        Flow *f, uint8_t flags, void *alstate,
+        void *txv, uint64_t tx_id)
+{
+    return DetectEngineInspectGenericList(tv, de_ctx, det_ctx, s, smd,
+                                          f, flags, alstate, txv, tx_id);
+}
+
 #define DATATYPE_PACKET                     (1<<0)
 #define DATATYPE_PAYLOAD                    (1<<1)
 #define DATATYPE_STREAM                     (1<<2)
@@ -1039,7 +1065,7 @@ static int DetectLuaSetup (DetectEngineCtx *de_ctx, Signature *s, char *str)
         int list = DetectBufferTypeGetByName("ssh_banner");
         SigMatchAppendSMToList(s, sm, list);
     } else if (lua->alproto == ALPROTO_SMTP) {
-        SigMatchAppendSMToList(s, sm, DETECT_SM_LIST_AMATCH);
+        SigMatchAppendSMToList(s, sm, g_smtp_generic_list_id);
     } else if (lua->alproto == ALPROTO_DNP3) {
         int list = DetectBufferTypeGetByName("dnp3");
         SigMatchAppendSMToList(s, sm, list);