suricata
|
#include "suricata-common.h"
#include "suricata.h"
#include "app-layer-smtp.h"
#include "util-decode-mime.h"
#include "util-ip.h"
#include "util-spm-bs.h"
#include "util-unittest.h"
#include "util-memcmp.h"
#include "util-print.h"
#include "util-validate.h"
#include "rust.h"
Go to the source code of this file.
Macros | |
#define | CR 13 |
#define | LF 10 |
#define | CRLF "\r\n" |
#define | COLON 58 |
#define | DASH 45 |
#define | PRINTABLE_START 33 |
#define | PRINTABLE_END 126 |
#define | UC_START 65 |
#define | UC_END 90 |
#define | LC_START 97 |
#define | LC_END 122 |
#define | UC_LC_DIFF 32 |
#define | EOL_LEN 2 |
#define | BASE64_STR "Base64" |
#define | MAX_LINE_LEN 998 /* Def in RFC 2045, excluding CRLF sequence */ |
#define | MAX_ENC_LINE_LEN 76 /* Def in RFC 2045, excluding CRLF sequence */ |
#define | MAX_HEADER_NAME 75 /* 75 + ":" = 76 */ |
#define | MAX_HEADER_VALUE 2000 /* Default - arbitrary limit */ |
#define | BOUNDARY_BUF 256 |
#define | CTNT_TYPE_STR "content-type" |
#define | CTNT_DISP_STR "content-disposition" |
#define | CTNT_TRAN_STR "content-transfer-encoding" |
#define | MSG_ID_STR "message-id" |
#define | MSG_STR "message/" |
#define | MULTIPART_STR "multipart/" |
#define | QP_STR "quoted-printable" |
#define | TXT_STR "text/plain" |
#define | HTML_STR "text/html" |
#define | STACK_FREE_NODES 10 |
#define | MAX_IP4_CHARS 15 |
#define | MAX_IP6_CHARS 39 |
#define | TEST(str, len, expect) |
#define | TEST(str, len, expect) |
Functions | |
void | MimeDecSetConfig (MimeDecConfig *config) |
Set global config policy. More... | |
MimeDecConfig * | MimeDecGetConfig (void) |
Get global config policy. More... | |
void | MimeDecFreeEntity (MimeDecEntity *entity) |
Frees a mime entity tree. More... | |
void | MimeDecFreeField (MimeDecField *field) |
Iteratively frees a header field entry list. More... | |
void | MimeDecFreeUrl (MimeDecUrl *url) |
Iteratively frees a URL entry list. More... | |
MimeDecField * | MimeDecAddField (MimeDecEntity *entity) |
Creates and adds a header field entry to an entity. More... | |
int | MimeDecFindFieldsForEach (const MimeDecEntity *entity, const char *name, int(*DataCallback)(const uint8_t *val, const size_t, void *data), void *data) |
Searches for header fields with the specified name. More... | |
MimeDecField * | MimeDecFindField (const MimeDecEntity *entity, const char *name) |
Searches for a header field with the specified name. More... | |
MimeDecEntity * | MimeDecAddEntity (MimeDecEntity *parent) |
Creates and adds a child entity to the specified parent entity. More... | |
const char * | MimeDecParseStateGetStatus (MimeDecParseState *state) |
MimeDecParseState * | MimeDecInitParser (void *data, int(*DataChunkProcessorFunc)(const uint8_t *chunk, uint32_t len, MimeDecParseState *state)) |
Init the parser by allocating memory for the state and top-level entity. More... | |
void | MimeDecDeInitParser (MimeDecParseState *state) |
De-Init parser by freeing up any residual memory. More... | |
int | MimeDecParseComplete (MimeDecParseState *state) |
Called to indicate that the last message line has been processed and the parsing operation is complete. More... | |
int | MimeDecParseLine (const uint8_t *line, const uint32_t len, const uint8_t delim_len, MimeDecParseState *state) |
Parse a line of a MIME message and update the parser state. More... | |
MimeDecEntity * | MimeDecParseFullMsg (const uint8_t *buf, uint32_t blen, void *data, int(*dcpfunc)(const uint8_t *chunk, uint32_t len, MimeDecParseState *state)) |
Parses an entire message when available in its entirety (wraps the line-based parsing functions) More... | |
void | MimeDecRegisterTests (void) |
Definition in file util-decode-mime.c.
#define BASE64_STR "Base64" |
Definition at line 58 of file util-decode-mime.c.
#define BOUNDARY_BUF 256 |
Definition at line 65 of file util-decode-mime.c.
#define COLON 58 |
Definition at line 46 of file util-decode-mime.c.
#define CR 13 |
Definition at line 41 of file util-decode-mime.c.
#define CRLF "\r\n" |
Definition at line 45 of file util-decode-mime.c.
#define CTNT_DISP_STR "content-disposition" |
Definition at line 67 of file util-decode-mime.c.
#define CTNT_TRAN_STR "content-transfer-encoding" |
Definition at line 68 of file util-decode-mime.c.
#define CTNT_TYPE_STR "content-type" |
Definition at line 66 of file util-decode-mime.c.
#define DASH 45 |
Definition at line 47 of file util-decode-mime.c.
#define EOL_LEN 2 |
Definition at line 55 of file util-decode-mime.c.
#define HTML_STR "text/html" |
Definition at line 74 of file util-decode-mime.c.
#define LC_END 122 |
Definition at line 53 of file util-decode-mime.c.
#define LC_START 97 |
Definition at line 52 of file util-decode-mime.c.
#define LF 10 |
Definition at line 42 of file util-decode-mime.c.
Definition at line 62 of file util-decode-mime.c.
#define MAX_HEADER_NAME 75 /* 75 + ":" = 76 */ |
Definition at line 63 of file util-decode-mime.c.
#define MAX_HEADER_VALUE 2000 /* Default - arbitrary limit */ |
Definition at line 64 of file util-decode-mime.c.
#define MAX_IP4_CHARS 15 |
Definition at line 80 of file util-decode-mime.c.
#define MAX_IP6_CHARS 39 |
Definition at line 81 of file util-decode-mime.c.
Definition at line 61 of file util-decode-mime.c.
#define MSG_ID_STR "message-id" |
Definition at line 69 of file util-decode-mime.c.
#define MSG_STR "message/" |
Definition at line 70 of file util-decode-mime.c.
#define MULTIPART_STR "multipart/" |
Definition at line 71 of file util-decode-mime.c.
#define PRINTABLE_END 126 |
Definition at line 49 of file util-decode-mime.c.
#define PRINTABLE_START 33 |
Definition at line 48 of file util-decode-mime.c.
#define QP_STR "quoted-printable" |
Definition at line 72 of file util-decode-mime.c.
#define STACK_FREE_NODES 10 |
Definition at line 77 of file util-decode-mime.c.
Definition at line 3211 of file util-decode-mime.c.
Definition at line 3211 of file util-decode-mime.c.
#define TXT_STR "text/plain" |
Definition at line 73 of file util-decode-mime.c.
#define UC_END 90 |
Definition at line 51 of file util-decode-mime.c.
#define UC_LC_DIFF 32 |
Definition at line 54 of file util-decode-mime.c.
#define UC_START 65 |
Definition at line 50 of file util-decode-mime.c.
MimeDecEntity* MimeDecAddEntity | ( | MimeDecEntity * | parent | ) |
Creates and adds a child entity to the specified parent entity.
parent | The parent entity |
Definition at line 385 of file util-decode-mime.c.
References MimeDecEntity::child, MimeDecEntity::next, SCMalloc, and unlikely.
MimeDecField* MimeDecAddField | ( | MimeDecEntity * | entity | ) |
Creates and adds a header field entry to an entity.
The entity is optional. If NULL is specified, than a new stand-alone field is created.
entity | The parent entity |
Definition at line 267 of file util-decode-mime.c.
References MimeDecEntity::field_list, MimeDecField::next, SCMalloc, and unlikely.
void MimeDecDeInitParser | ( | MimeDecParseState * | state | ) |
De-Init parser by freeing up any residual memory.
state | The parser state |
Definition at line 2442 of file util-decode-mime.c.
MimeDecField* MimeDecFindField | ( | const MimeDecEntity * | entity, |
const char * | name | ||
) |
Searches for a header field with the specified name.
entity | The entity to search |
name | The header name (lowercase) |
Definition at line 326 of file util-decode-mime.c.
References MimeDecEntity::field_list, MimeDecField::name, MimeDecField::name_len, MimeDecField::next, and SCMemcmp.
int MimeDecFindFieldsForEach | ( | const MimeDecEntity * | entity, |
const char * | name, | ||
int(*)(const uint8_t *val, const size_t, void *data) | DataCallback, | ||
void * | data | ||
) |
Searches for header fields with the specified name.
entity | The entity to search |
name | The header name (lowercase) |
Definition at line 298 of file util-decode-mime.c.
References MimeDecEntity::field_list, MimeDecField::name, MimeDecField::name_len, MimeDecField::next, SCMemcmp, MimeDecField::value, and MimeDecField::value_len.
void MimeDecFreeEntity | ( | MimeDecEntity * | entity | ) |
Frees a mime entity tree.
entity | The root entity |
Definition at line 176 of file util-decode-mime.c.
void MimeDecFreeField | ( | MimeDecField * | field | ) |
Iteratively frees a header field entry list.
field | The header field |
Definition at line 209 of file util-decode-mime.c.
References MimeDecField::name, MimeDecField::next, SCFree, and MimeDecField::value.
void MimeDecFreeUrl | ( | MimeDecUrl * | url | ) |
Iteratively frees a URL entry list.
url | The url entry |
Definition at line 238 of file util-decode-mime.c.
References MimeDecUrl::next, SCFree, and MimeDecUrl::url.
MimeDecConfig* MimeDecGetConfig | ( | void | ) |
Get global config policy.
Definition at line 146 of file util-decode-mime.c.
MimeDecParseState* MimeDecInitParser | ( | void * | data, |
int(*)(const uint8_t *chunk, uint32_t len, MimeDecParseState *state) | DataChunkProcessorFunc | ||
) |
Init the parser by allocating memory for the state and top-level entity.
data | A caller-specified pointer to data for access within the data chunk processor callback function |
dcpfunc | The data chunk processor callback function |
Definition at line 2390 of file util-decode-mime.c.
References MimeDecEntity::ctnt_flags, CTNT_IS_MSG, MimeDecParseState::msg, SCFree, SCMalloc, MimeDecParseState::stack, and unlikely.
Referenced by MimeDecParseFullMsg().
int MimeDecParseComplete | ( | MimeDecParseState * | state | ) |
Called to indicate that the last message line has been processed and the parsing operation is complete.
This function should be called directly by the caller.
state | The parser state |
Definition at line 2478 of file util-decode-mime.c.
References MIME_DEC_ERR_STATE, MIME_DEC_OK, PARSE_ERROR, SCLogDebug, and MimeDecParseState::state_flag.
MimeDecEntity* MimeDecParseFullMsg | ( | const uint8_t * | buf, |
uint32_t | blen, | ||
void * | data, | ||
int(*)(const uint8_t *chunk, uint32_t len, MimeDecParseState *state) | dcpfunc | ||
) |
Parses an entire message when available in its entirety (wraps the line-based parsing functions)
buf | Buffer pointing to the full message |
blen | Length of the buffer |
data | Caller data to be available in callback |
dcpfunc | Callback for processing each decoded body data chunk |
Definition at line 2580 of file util-decode-mime.c.
References MIME_DEC_OK, MimeDecInitParser(), MimeDecParseState::msg, msg, and SCLogDebug.
int MimeDecParseLine | ( | const uint8_t * | line, |
const uint32_t | len, | ||
const uint8_t | delim_len, | ||
MimeDecParseState * | state | ||
) |
Parse a line of a MIME message and update the parser state.
line | A string representing the line (w/out CRLF) |
len | The length of the line |
delim_len | The length of the line end delimiter |
state | The parser state |
Definition at line 2546 of file util-decode-mime.c.
References len, and MIME_DEC_OK.
const char* MimeDecParseStateGetStatus | ( | MimeDecParseState * | state | ) |
Definition at line 2317 of file util-decode-mime.c.
void MimeDecRegisterTests | ( | void | ) |
Definition at line 3555 of file util-decode-mime.c.
References UtRegisterTest().
void MimeDecSetConfig | ( | MimeDecConfig * | config | ) |
Set global config policy.
config | Config policy to set |
Definition at line 127 of file util-decode-mime.c.