mime: fix and cleanup tests

Line count check was failing after recent delim handling updates.
pull/7586/head
Victor Julien 3 years ago
parent 6e2c066ce1
commit 074cfb5c68

@ -2684,73 +2684,52 @@ static int TestDataChunkCallback(const uint8_t *chunk, uint32_t len,
/* Test simple case of line counts */ /* Test simple case of line counts */
static int MimeDecParseLineTest01(void) static int MimeDecParseLineTest01(void)
{ {
int ret = MIME_DEC_OK;
uint32_t expected_count = 3;
uint32_t line_count = 0; uint32_t line_count = 0;
/* Init parser */ /* Init parser */
MimeDecParseState *state = MimeDecInitParser(&line_count, MimeDecParseState *state = MimeDecInitParser(&line_count,
TestDataChunkCallback); TestDataChunkCallback);
const char *str = "From: Sender1"; const char *str = "From: Sender1\n";
ret |= MimeDecParseLine((uint8_t *)str, strlen(str), 1, state); FAIL_IF_NOT(MimeDecParseLine((uint8_t *)str, strlen(str) - 1, 1, state) == MIME_DEC_OK);
str = "To: Recipient1"; str = "To: Recipient1\n";
ret |= MimeDecParseLine((uint8_t *)str, strlen(str), 1, state); FAIL_IF_NOT(MimeDecParseLine((uint8_t *)str, strlen(str) - 1, 1, state) == MIME_DEC_OK);
str = "Content-Type: text/plain"; str = "Content-Type: text/plain\n";
ret |= MimeDecParseLine((uint8_t *)str, strlen(str), 1, state); FAIL_IF_NOT(MimeDecParseLine((uint8_t *)str, strlen(str) - 1, 1, state) == MIME_DEC_OK);
str = ""; str = "\n";
ret |= MimeDecParseLine((uint8_t *)str, strlen(str), 1, state); FAIL_IF_NOT(MimeDecParseLine((uint8_t *)str, strlen(str) - 1, 1, state) == MIME_DEC_OK);
str = "A simple message line 1"; str = "A simple message line 1\n";
ret |= MimeDecParseLine((uint8_t *)str, strlen(str), 1, state); FAIL_IF_NOT(MimeDecParseLine((uint8_t *)str, strlen(str) - 1, 1, state) == MIME_DEC_OK);
str = "A simple message line 2"; str = "A simple message line 2\n";
ret |= MimeDecParseLine((uint8_t *)str, strlen(str), 1, state); FAIL_IF_NOT(MimeDecParseLine((uint8_t *)str, strlen(str) - 1, 1, state) == MIME_DEC_OK);
str = "A simple message line 3"; str = "A simple message line 3\n";
ret |= MimeDecParseLine((uint8_t *)str, strlen(str), 1, state); FAIL_IF_NOT(MimeDecParseLine((uint8_t *)str, strlen(str) - 1, 1, state) == MIME_DEC_OK);
if (ret != MIME_DEC_OK) {
return 0;
}
/* Completed */ /* Completed */
ret = MimeDecParseComplete(state); FAIL_IF_NOT(MimeDecParseComplete(state) == MIME_DEC_OK);
if (ret != MIME_DEC_OK) {
return 0;
}
MimeDecEntity *msg = state->msg; MimeDecEntity *msg = state->msg;
if (msg->next != NULL || msg->child != NULL) { FAIL_IF_NOT_NULL(msg->next);
SCLogInfo("Error: Invalid sibling or child message"); FAIL_IF_NOT_NULL(msg->child);
return 0;
}
MimeDecFreeEntity(msg); MimeDecFreeEntity(msg);
/* De Init parser */ /* De Init parser */
MimeDecDeInitParser(state); MimeDecDeInitParser(state);
SCLogInfo("LINE COUNT FINISHED: %d", line_count); FAIL_IF_NOT(line_count == 3);
PASS;
if (expected_count != line_count) {
SCLogInfo("Error: Line count is invalid: expected - %d actual - %d",
expected_count, line_count);
return 0;
}
return 1;
} }
/* Test simple case of EXE URL extraction */ /* Test simple case of EXE URL extraction */
static int MimeDecParseLineTest02(void) static int MimeDecParseLineTest02(void)
{ {
int ret = MIME_DEC_OK;
uint32_t expected_count = 2;
uint32_t line_count = 0; uint32_t line_count = 0;
ConfNode *url_schemes = ConfNodeNew(); ConfNode *url_schemes = ConfNodeNew();
@ -2772,58 +2751,41 @@ static int MimeDecParseLineTest02(void)
MimeDecParseState *state = MimeDecInitParser(&line_count, MimeDecParseState *state = MimeDecInitParser(&line_count,
TestDataChunkCallback); TestDataChunkCallback);
const char *str = "From: Sender1"; const char *str = "From: Sender1\r\n";
ret |= MimeDecParseLine((uint8_t *)str, strlen(str), 1, state); FAIL_IF_NOT(MimeDecParseLine((uint8_t *)str, strlen(str) - 2, 2, state) == MIME_DEC_OK);
str = "To: Recipient1"; str = "To: Recipient1\r\n";
ret |= MimeDecParseLine((uint8_t *)str, strlen(str), 1, state); FAIL_IF_NOT(MimeDecParseLine((uint8_t *)str, strlen(str) - 2, 2, state) == MIME_DEC_OK);
str = "Content-Type: text/plain"; str = "Content-Type: text/plain\r\n";
ret |= MimeDecParseLine((uint8_t *)str, strlen(str), 1, state); FAIL_IF_NOT(MimeDecParseLine((uint8_t *)str, strlen(str) - 2, 2, state) == MIME_DEC_OK);
str = ""; str = "\r\n";
ret |= MimeDecParseLine((uint8_t *)str, strlen(str), 1, state); FAIL_IF_NOT(MimeDecParseLine((uint8_t *)str, strlen(str) - 2, 2, state) == MIME_DEC_OK);
str = "A simple message line 1"; str = "A simple message line 1\r\n";
ret |= MimeDecParseLine((uint8_t *)str, strlen(str), 1, state); 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?" str = "A simple message line 2 click on http://www.test.com/malware.exe?"
"hahah hopefully you click this link"; "hahah hopefully you click this link\r\n";
ret |= MimeDecParseLine((uint8_t *)str, strlen(str), 1, state); FAIL_IF_NOT(MimeDecParseLine((uint8_t *)str, strlen(str) - 2, 2, state) == MIME_DEC_OK);
if (ret != MIME_DEC_OK) {
return 0;
}
/* Completed */ /* Completed */
ret = MimeDecParseComplete(state); FAIL_IF_NOT(MimeDecParseComplete(state) == MIME_DEC_OK);
if (ret != MIME_DEC_OK) {
return 0;
}
MimeDecEntity *msg = state->msg; MimeDecEntity *msg = state->msg;
if (msg->url_list == NULL || (msg->url_list != NULL && FAIL_IF_NULL(msg);
!(msg->url_list->url_flags & URL_IS_EXE))) { FAIL_IF_NULL(msg->url_list);
SCLogInfo("Warning: Expected EXE URL not found"); FAIL_IF_NOT((msg->url_list->url_flags & URL_IS_EXE));
return 0;
}
MimeDecFreeEntity(msg); MimeDecFreeEntity(msg);
/* De Init parser */ /* De Init parser */
MimeDecDeInitParser(state); MimeDecDeInitParser(state);
ConfNodeFree(url_schemes); ConfNodeFree(url_schemes);
MimeDecGetConfig()->extract_urls_schemes = NULL; MimeDecGetConfig()->extract_urls_schemes = NULL;
SCLogInfo("LINE COUNT FINISHED: %d", line_count); FAIL_IF_NOT(line_count == 2);
PASS;
if (expected_count != line_count) {
SCLogInfo("Warning: Line count is invalid: expected - %d actual - %d",
expected_count, line_count);
return 0;
}
return 1;
} }
/* Test error case where no url schemes set in config */ /* Test error case where no url schemes set in config */

Loading…
Cancel
Save