]> git.ipfire.org Git - thirdparty/suricata.git/commitdiff
json-smtp: add tx_id param to metadata generation
authorEric Leblond <eric@regit.org>
Mon, 14 Sep 2015 09:39:19 +0000 (11:39 +0200)
committerEric Leblond <eric@regit.org>
Tue, 6 Oct 2015 21:30:46 +0000 (23:30 +0200)
In all metadata generation contexts we know the tx_id so we better
used it to log the correct transaction and not an other one.

src/output-json-alert.c
src/output-json-file.c
src/output-json-smtp.c
src/output-json-smtp.h

index 61780075f5293bc6e8a70486edfdef535e5178cd..b5c624e2b25b9ce469d1d866ea2db1343fe4a98e 100644 (file)
@@ -246,7 +246,7 @@ static int AlertJson(ThreadVars *tv, JsonAlertLogThread *aft, const Packet *p)
 
                 /* http alert */
                 if (proto == ALPROTO_SMTP) {
-                    hjs = JsonSMTPAddMetadata(p->flow);
+                    hjs = JsonSMTPAddMetadata(p->flow, pa->tx_id);
                     if (hjs)
                         json_object_set_new(js, "smtp", hjs);
                 }
index 615ae596e86c55dc37aab6936733295c44d1701c..09ee967907345e8e0f074d44229b7690f468a2db 100644 (file)
@@ -99,7 +99,7 @@ static void FileWriteJsonRecord(JsonFileLogThread *aft, const Packet *p, const F
                 json_object_set_new(js, "http", hjs);
             break;
         case ALPROTO_SMTP:
-            hjs = JsonSMTPAddMetadata(p->flow);
+            hjs = JsonSMTPAddMetadata(p->flow, ff->txid);
             if (hjs)
                 json_object_set_new(js, "smtp", hjs);
             hjs = JsonEmailAddMetadata(p->flow);
index dd9d60d90a27dbf823355d56de2a51ba78591491..be5275de1769c146e69e88ca8f61eb9829fc9343 100644 (file)
@@ -117,11 +117,10 @@ static int JsonSmtpLogger(ThreadVars *tv, void *thread_data, const Packet *p, Fl
 
 }
 
-json_t *JsonSMTPAddMetadata(const Flow *f)
+json_t *JsonSMTPAddMetadata(const Flow *f, uint64_t tx_id)
 {
     SMTPState *smtp_state = (SMTPState *)FlowGetAppState(f);
     if (smtp_state) {
-        uint64_t tx_id = AppLayerParserGetTransactionLogId(f->alparser);
         SMTPTransaction *tx = AppLayerParserGetTx(IPPROTO_TCP, ALPROTO_SMTP, smtp_state, tx_id);
 
         if (tx) {
index 5b3233abca9fd1af92e7a030241ab5a24788a64d..2f79d992011a4477ebc0ca5afd862d785fbba16a 100644 (file)
@@ -26,7 +26,7 @@
 
 void TmModuleJsonSmtpLogRegister (void);
 #ifdef HAVE_LIBJANSSON
-json_t *JsonSMTPAddMetadata(const Flow *f);
+json_t *JsonSMTPAddMetadata(const Flow *f, uint64_t tx_id);
 #endif
 
 #endif /* __OUTPUT_JSON_SMTP_H__ */