From: huica Date: Sat, 1 Aug 2015 14:34:22 +0000 (-0400) Subject: fix the depth X-Git-Tag: 3.0.0-233~828^2~38 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=c74ef2f79dfb81b96ef8ce4ef1e17d0895dce6b0;p=thirdparty%2Fsnort3.git fix the depth --- diff --git a/src/file_api/file_mime_decode.cc b/src/file_api/file_mime_decode.cc index 3f08575ad..4359f7e16 100644 --- a/src/file_api/file_mime_decode.cc +++ b/src/file_api/file_mime_decode.cc @@ -55,7 +55,7 @@ void MimeDecode::process_decode_type(const char* start, int length, bool cnt_xf) if ( tmp != NULL ) { decode_type = DECODE_B64; - decoder = new B64Decode(config->get_max_depth()); + decoder = new B64Decode(config->get_b64_depth()); detection_depth = config->get_b64_depth(); return; } @@ -67,7 +67,7 @@ void MimeDecode::process_decode_type(const char* start, int length, bool cnt_xf) if ( tmp != NULL ) { decode_type = DECODE_QP; - decoder = new QPDecode(config->get_max_depth()); + decoder = new QPDecode(config->get_qp_depth()); detection_depth = config->get_qp_depth(); return; } @@ -79,7 +79,7 @@ void MimeDecode::process_decode_type(const char* start, int length, bool cnt_xf) if ( tmp != NULL ) { decode_type = DECODE_UU; - decoder = new UUDecode(config->get_max_depth()); + decoder = new UUDecode(config->get_uu_depth()); detection_depth = config->get_uu_depth(); return; } @@ -89,7 +89,7 @@ void MimeDecode::process_decode_type(const char* start, int length, bool cnt_xf) if (config->get_bitenc_depth() > -1) { decode_type = DECODE_BITENC; - decoder = new BitDecode(config->get_max_depth()); + decoder = new BitDecode(config->get_bitenc_depth()); detection_depth = config->get_bitenc_depth(); return; } diff --git a/src/file_api/file_mime_process.cc b/src/file_api/file_mime_process.cc index 960e01648..e1d35c632 100644 --- a/src/file_api/file_mime_process.cc +++ b/src/file_api/file_mime_process.cc @@ -723,6 +723,7 @@ MimeSession::MimeSession(DecodeConfig* dconf, MailLogConfig* lconf) decode_conf = dconf; log_config = lconf; log_state = new MailLogState(log_config); + reset_mime_paf_state(&mime_boundary); } MimeSession::~MimeSession() diff --git a/src/utils/sf_email_attach_decode.cc b/src/utils/sf_email_attach_decode.cc index 854831fa6..b8aa8e77b 100644 --- a/src/utils/sf_email_attach_decode.cc +++ b/src/utils/sf_email_attach_decode.cc @@ -414,17 +414,22 @@ int DataDecode::get_decoded_data(uint8_t** buf, uint32_t* size) return 0; } +#define MAX_DEPTH 65536 + DataDecode::DataDecode(int max_depth) { - work_buffer = (uint8_t*)SnortAlloc(2*max_depth); + if (!max_depth) + buf_size = MAX_DEPTH; + else + buf_size = max_depth; + work_buffer = (uint8_t*)SnortAlloc(2*buf_size); prev_encoded_bytes = 0; prev_encoded_buf = nullptr; decoded_bytes = 0; - buf_size = max_depth; encodeBuf = (uint8_t*)work_buffer; - decodeBuf = (uint8_t*)work_buffer + max_depth; + decodeBuf = (uint8_t*)work_buffer + buf_size; encode_depth = decode_depth = max_depth; encode_bytes_read = decode_bytes_read = 0;