]> git.ipfire.org Git - thirdparty/suricata.git/commitdiff
smtp: fix null deref with config option body md5
authorPhilippe Antoine <pantoine@oisf.net>
Wed, 30 Aug 2023 19:35:08 +0000 (21:35 +0200)
committerVictor Julien <vjulien@oisf.net>
Wed, 13 Sep 2023 08:09:22 +0000 (10:09 +0200)
Ticket: #6279

If we have the smtp body beginning without headers, we need to
create the md5 context and right away and supply data to it.
Otherwise, on the next line being processed, md5_ctx will be
NULL but body_begin will have been reset to 0

src/util-decode-mime.c

index 7ee5263b769c63932291098823663c6fd8ac487a..b22a8c2e6f619d20c02ffa966afdf265f83e8da0 100644 (file)
@@ -1766,6 +1766,12 @@ static int FindMimeHeader(const uint8_t *buf, uint32_t blen,
         state->body_begin = 1;
         state->body_end = 0;
 
+        // Begin the body md5 computation if config asks so
+        if (MimeDecGetConfig()->body_md5 && state->md5_ctx == NULL) {
+            state->md5_ctx = SCMd5New();
+            SCMd5Update(state->md5_ctx, buf, blen + state->current_line_delimiter_len);
+        }
+
         ret = ProcessBodyLine(buf, blen, state);
         if (ret != MIME_DEC_OK) {
             SCLogDebug("Error: ProcessBodyLine() function failed");