]> git.ipfire.org Git - thirdparty/suricata.git/commitdiff
mime: fix and cleanup tests 7592/head
authorVictor Julien <vjulien@oisf.net>
Tue, 28 Jun 2022 05:46:54 +0000 (07:46 +0200)
committerVictor Julien <vjulien@oisf.net>
Wed, 29 Jun 2022 20:59:02 +0000 (22:59 +0200)
Line count check was failing after recent delim handling updates.

(cherry picked from commit 074cfb5c68e76642f35f78c10e56761eb8010f5f)

src/util-decode-mime.c

index 457e3e9da001f0593028a38c836b4860922c5b16..ca13ed2d752465e2625a4ec630137b01238abc62 100644 (file)
@@ -2849,73 +2849,52 @@ static int TestDataChunkCallback(const uint8_t *chunk, uint32_t len,
 /* Test simple case of line counts */
 static int MimeDecParseLineTest01(void)
 {
-    int ret = MIME_DEC_OK;
-
-    uint32_t expected_count = 3;
     uint32_t line_count = 0;
 
     /* Init parser */
     MimeDecParseState *state = MimeDecInitParser(&line_count,
             TestDataChunkCallback);
 
-    const char *str = "From: Sender1";
-    ret |= MimeDecParseLine((uint8_t *)str, strlen(str), 1, state);
+    const char *str = "From: Sender1\n";
+    FAIL_IF_NOT(MimeDecParseLine((uint8_t *)str, strlen(str) - 1, 1, state) == MIME_DEC_OK);
 
-    str = "To: Recipient1";
-    ret |= MimeDecParseLine((uint8_t *)str, strlen(str), 1, state);
+    str = "To: Recipient1\n";
+    FAIL_IF_NOT(MimeDecParseLine((uint8_t *)str, strlen(str) - 1, 1, state) == MIME_DEC_OK);
 
-    str = "Content-Type: text/plain";
-    ret |= MimeDecParseLine((uint8_t *)str, strlen(str), 1, state);
+    str = "Content-Type: text/plain\n";
+    FAIL_IF_NOT(MimeDecParseLine((uint8_t *)str, strlen(str) - 1, 1, state) == MIME_DEC_OK);
 
-    str = "";
-    ret |= MimeDecParseLine((uint8_t *)str, strlen(str), 1, state);
+    str = "\n";
+    FAIL_IF_NOT(MimeDecParseLine((uint8_t *)str, strlen(str) - 1, 1, state) == MIME_DEC_OK);
 
-    str = "A simple message line 1";
-    ret |= MimeDecParseLine((uint8_t *)str, strlen(str), 1, state);
+    str = "A simple message line 1\n";
+    FAIL_IF_NOT(MimeDecParseLine((uint8_t *)str, strlen(str) - 1, 1, state) == MIME_DEC_OK);
 
-    str = "A simple message line 2";
-    ret |= MimeDecParseLine((uint8_t *)str, strlen(str), 1, state);
+    str = "A simple message line 2\n";
+    FAIL_IF_NOT(MimeDecParseLine((uint8_t *)str, strlen(str) - 1, 1, state) == MIME_DEC_OK);
 
-    str = "A simple message line 3";
-    ret |= MimeDecParseLine((uint8_t *)str, strlen(str), 1, state);
+    str = "A simple message line 3\n";
+    FAIL_IF_NOT(MimeDecParseLine((uint8_t *)str, strlen(str) - 1, 1, state) == MIME_DEC_OK);
 
-    if (ret != MIME_DEC_OK) {
-        return 0;
-    }
     /* Completed */
-    ret = MimeDecParseComplete(state);
-    if (ret != MIME_DEC_OK) {
-        return 0;
-    }
+    FAIL_IF_NOT(MimeDecParseComplete(state) == MIME_DEC_OK);
 
     MimeDecEntity *msg = state->msg;
-    if (msg->next != NULL || msg->child != NULL) {
-        SCLogInfo("Error: Invalid sibling or child message");
-        return 0;
-    }
+    FAIL_IF_NOT_NULL(msg->next);
+    FAIL_IF_NOT_NULL(msg->child);
 
     MimeDecFreeEntity(msg);
 
     /* De Init parser */
     MimeDecDeInitParser(state);
 
-    SCLogInfo("LINE COUNT FINISHED: %d", line_count);
-
-    if (expected_count != line_count) {
-        SCLogInfo("Error: Line count is invalid: expected - %d actual - %d",
-                expected_count, line_count);
-        return 0;
-    }
-
-    return 1;
+    FAIL_IF_NOT(line_count == 3);
+    PASS;
 }
 
 /* Test simple case of EXE URL extraction */
 static int MimeDecParseLineTest02(void)
 {
-    int ret = MIME_DEC_OK;
-
-    uint32_t expected_count = 2;
     uint32_t line_count = 0;
 
     MimeDecGetConfig()->decode_base64 = 1;
@@ -2926,55 +2905,39 @@ static int MimeDecParseLineTest02(void)
     MimeDecParseState *state = MimeDecInitParser(&line_count,
             TestDataChunkCallback);
 
-    const char *str = "From: Sender1";
-    ret |= MimeDecParseLine((uint8_t *)str, strlen(str), 1, state);
+    const char *str = "From: Sender1\r\n";
+    FAIL_IF_NOT(MimeDecParseLine((uint8_t *)str, strlen(str) - 2, 2, state) == MIME_DEC_OK);
 
-    str = "To: Recipient1";
-    ret |= MimeDecParseLine((uint8_t *)str, strlen(str), 1, state);
+    str = "To: Recipient1\r\n";
+    FAIL_IF_NOT(MimeDecParseLine((uint8_t *)str, strlen(str) - 2, 2, state) == MIME_DEC_OK);
 
-    str = "Content-Type: text/plain";
-    ret |= MimeDecParseLine((uint8_t *)str, strlen(str), 1, state);
+    str = "Content-Type: text/plain\r\n";
+    FAIL_IF_NOT(MimeDecParseLine((uint8_t *)str, strlen(str) - 2, 2, state) == MIME_DEC_OK);
 
-    str = "";
-    ret |= MimeDecParseLine((uint8_t *)str, strlen(str), 1, state);
+    str = "\r\n";
+    FAIL_IF_NOT(MimeDecParseLine((uint8_t *)str, strlen(str) - 2, 2, state) == MIME_DEC_OK);
 
-    str = "A simple message line 1";
-    ret |= MimeDecParseLine((uint8_t *)str, strlen(str), 1, state);
+    str = "A simple message line 1\r\n";
+    FAIL_IF_NOT(MimeDecParseLine((uint8_t *)str, strlen(str) - 2, 2, state) == MIME_DEC_OK);
 
     str = "A simple message line 2 click on http://www.test.com/malware.exe?"
-            "hahah hopefully you click this link";
-    ret |= MimeDecParseLine((uint8_t *)str, strlen(str), 1, state);
+          "hahah hopefully you click this link\r\n";
+    FAIL_IF_NOT(MimeDecParseLine((uint8_t *)str, strlen(str) - 2, 2, state) == MIME_DEC_OK);
 
-    if (ret != MIME_DEC_OK) {
-        return 0;
-    }
     /* Completed */
-    ret = MimeDecParseComplete(state);
-    if (ret != MIME_DEC_OK) {
-        return 0;
-    }
+    FAIL_IF_NOT(MimeDecParseComplete(state) == MIME_DEC_OK);
 
     MimeDecEntity *msg = state->msg;
-    if (msg->url_list == NULL || (msg->url_list != NULL &&
-            !(msg->url_list->url_flags & URL_IS_EXE))) {
-        SCLogInfo("Warning: Expected EXE URL not found");
-        return 0;
-    }
-
+    FAIL_IF_NULL(msg);
+    FAIL_IF_NULL(msg->url_list);
+    FAIL_IF_NOT((msg->url_list->url_flags & URL_IS_EXE));
     MimeDecFreeEntity(msg);
 
     /* De Init parser */
     MimeDecDeInitParser(state);
 
-    SCLogInfo("LINE COUNT FINISHED: %d", line_count);
-
-    if (expected_count != line_count) {
-        SCLogInfo("Warning: Line count is invalid: expected - %d actual - %d",
-                expected_count, line_count);
-        return 0;
-    }
-
-    return 1;
+    FAIL_IF_NOT(line_count == 2);
+    PASS;
 }
 
 /* Test full message with linebreaks */