]> git.ipfire.org Git - thirdparty/snort3.git/commitdiff
update interfaces based on comments
authorhuica <huica@cisco.com>
Wed, 16 Sep 2015 18:42:23 +0000 (14:42 -0400)
committerhuica <huica@cisco.com>
Wed, 16 Sep 2015 18:42:23 +0000 (14:42 -0400)
17 files changed:
src/file_api/file_flows.cc
src/file_api/file_flows.h
src/file_api/libs/file_lib.h
src/mime/CMakeLists.txt
src/mime/decode_uu.cc
src/mime/dev_notes.txt
src/mime/file_mime_process.cc
src/mime/file_mime_process.h
src/service_inspectors/http_inspect/hi_main.cc
src/service_inspectors/imap/imap.cc
src/service_inspectors/nhttp_inspect/nhttp_flow_data.cc
src/service_inspectors/nhttp_inspect/nhttp_msg_body.cc
src/service_inspectors/nhttp_inspect/nhttp_msg_chunk.cc
src/service_inspectors/nhttp_inspect/nhttp_stream_splitter.cc
src/service_inspectors/pop/pop.cc
src/service_inspectors/smtp/smtp.cc
src/utils/util.h

index b7e49a6dcb15c4da6296b4c72a2ca8a54673bfd8..26fb9fbfb2a2b6d682ea2b23361fb94953ef46a6 100644 (file)
@@ -240,7 +240,7 @@ bool FileFlows::file_process(const uint8_t* file_data, int data_size,
     return file_process(context, file_data, data_size, position);
 }
 
-void FileFlows::set_file_name(uint8_t* fname, uint32_t name_size)
+void FileFlows::set_file_name(const uint8_t* fname, uint32_t name_size)
 {
     FileContext* context = get_current_file_context();
     if (context)
@@ -249,7 +249,6 @@ void FileFlows::set_file_name(uint8_t* fname, uint32_t name_size)
         context->print();
 }
 
-
 FilePosition get_file_position(Packet* pkt)
 {
     FilePosition position = SNORT_FILE_POSITION_UNKNOWN;
index 0dd6ec89b510e05bbe4df929c20da32ade1f06ee..98db6fed82773b000c14cac290a784e5f8ce17d0 100644 (file)
@@ -21,7 +21,7 @@
 #ifndef FILE_FLOWS_H
 #define FILE_FLOWS_H
 
-// This provides a wrapper to start/stop file service
+// This provides a wrapper to manage several file contexts
 
 #include <sys/types.h>
 #include "main/snort_types.h"
@@ -46,7 +46,7 @@ public:
 
     uint32_t get_new_file_instance();
 
-    void set_file_name(uint8_t* fname, uint32_t name_size);
+    void set_file_name(const uint8_t* fname, uint32_t name_size);
 
     // This is used when there is only one file per session
     bool file_process(const uint8_t* file_data, int data_size,
index 271c07b8ea05ebe226c1beebed0ace53748ebd0a..2db3df22e590d5a6c5ec18358873786e857f8e57 100644 (file)
@@ -81,7 +81,7 @@ private:
     bool file_type_enabled = false;
     bool file_signature_enabled = false;
     bool file_capture_enabled = false;
-    uint8_t* file_name = NULL;
+    uint8_t* file_name = nullptr;
     uint32_t file_name_size = 0;
     uint64_t file_size = 0;
     FileDirection direction = DIRECTION_UNKNOWN;
index 7318c0ad37f114cb849a9fdf9a2bb711d4f54dc6..dc55ce109369b53e526510379545272a2f76a5e7 100644 (file)
@@ -11,7 +11,7 @@ add_library ( mime STATIC
     file_mime_paf.cc 
     file_mime_process.h 
     file_mime_process.cc 
-    decode_base.h.cc 
+    decode_base.cc 
     decode_base.h
     decode_b64.cc
     decode_b64.h
index 8c9fb8303f481360435914f83594901930a2287d..95f7b35cdb01177c4ad560cd44137e1b2054455d 100644 (file)
 
 #include <mime/decode_base.h>
 #include "decode_uu.h"
-
 #include "utils/snort_bounds.h"
 #include "utils/util.h"
 #include "utils/util_unfold.h"
 
-
 #define UU_DECODE_CHAR(c) (((c) - 0x20) & 0x3f)
 
-
 void UUDecode::reset_decode_state()
 {
     reset_decoded_bytes();
index fb624ce4dd302ef96d8c4529b7a9f5fe40f4638b..5f0d9719c8c57384b00dcf88948f19a78754b65b 100644 (file)
@@ -5,5 +5,5 @@ service inpsectors such as HTTP, SMTP, POP, and IMAP.
 * Decode: supports Base64, UU-encoding, QP-encoding, and Bit-encoding
 * Log: logs file names and email headers
 * Configuration: configure decode and log
-* PAF: provides common processing for PAF (Protocol Wware Flushing)
+* PAF: provides common processing for PAF (Protocol Aware Flushing)
 
index a7507fcff754ed97f25b9c45dd2bf650f7757a68..455a4981c6eae30a9cd859c7b43cf51f9b33d5ca 100644 (file)
@@ -629,14 +629,15 @@ const uint8_t* MimeSession::process_mime_data_paf(Flow* flow, const uint8_t* sta
 // Main function for mime processing
 // This should be called when mime data is available
 const uint8_t* MimeSession::process_mime_data(Flow* flow, const uint8_t* start,
-    const uint8_t* data_end_marker, bool upload, FilePosition position)
+    int data_size, bool upload, FilePosition position)
 {
     const uint8_t* attach_start = start;
     const uint8_t* attach_end;
 
+    const uint8_t* data_end_marker = start + data_size;
+
     if (position != SNORT_FILE_POSITION_UNKNOWN)
     {
-        //FilePosition position = file_api->get_file_position(p);
         process_mime_data_paf(flow, attach_start, data_end_marker,
             upload, position);
         return data_end_marker;
index f04370033014edaa0d541bbf143200c20bacf02a..84e5719da0eeb3a8d3ce5f4c376972a8dc6424af 100644 (file)
@@ -59,7 +59,7 @@ public:
     virtual ~MimeSession();
     static void init();
     static void exit();
-    const uint8_t* process_mime_data(Flow *flow, const uint8_t *start, const uint8_t *end,
+    const uint8_t* process_mime_data(Flow *flow, const uint8_t *data, int data_size,
         bool upload, FilePosition position);
     int get_data_state();
     void set_data_state(int);
index 8dbafedc0e08695bb0831d2450b3991a1a4db7b9..0814253984b41299a39f501ac658e6bf89203100 100644 (file)
@@ -659,8 +659,7 @@ int HttpInspectMain(HTTPINSPECT_CONF* conf, Packet* p)
             {
                 if (hsd->mime_ssn)
                 {
-                    uint8_t* end = ( uint8_t*)(p->data) + p->dsize;
-                    hsd->mime_ssn->process_mime_data(p->flow, p->data, end, 1,
+                    hsd->mime_ssn->process_mime_data(p->flow, p->data, p->dsize, 1,
                         SNORT_FILE_POSITION_UNKNOWN);
                 }
                 else if (get_file_processed_size(p->flow) >0)
@@ -783,10 +782,8 @@ int HttpInspectMain(HTTPINSPECT_CONF* conf, Packet* p)
                                 &(conf->global->mime_conf));
                         }
 
-                        end = (uint8_t*)(session->client.request.post_raw +
-                            session->client.request.post_raw_size);
-                        hsd->mime_ssn->process_mime_data(p->flow, start, end, 1,
-                            SNORT_FILE_POSITION_UNKNOWN);
+                        hsd->mime_ssn->process_mime_data(p->flow, start,
+                            session->client.request.post_raw_size, 1, SNORT_FILE_POSITION_UNKNOWN);
                     }
                     else
                     {
@@ -823,8 +820,7 @@ int HttpInspectMain(HTTPINSPECT_CONF* conf, Packet* p)
             {
                 if (hsd->mime_ssn)
                 {
-                    uint8_t* end = ( uint8_t*)(p->data) + p->dsize;
-                    hsd->mime_ssn->process_mime_data(p->flow, p->data, end, 1,
+                    hsd->mime_ssn->process_mime_data(p->flow, p->data, p->dsize, 1,
                         SNORT_FILE_POSITION_UNKNOWN);
                 }
                 else if (get_file_processed_size(p->flow) >0)
index 10efccaf841c34cc3868677118c638b0206e9673..14d463e4aba02f6257927126151a9b7e8f573a4e 100644 (file)
@@ -452,9 +452,9 @@ static void IMAP_ProcessServerPacket(Packet* p, IMAPData* imap_ssn)
             DebugMessage(DEBUG_IMAP, "DATA STATE ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n");
             if ( imap_ssn->body_len > imap_ssn->body_read)
             {
-                uint32_t len = imap_ssn->body_len - imap_ssn->body_read;
+                int len = imap_ssn->body_len - imap_ssn->body_read;
 
-                if ( (uint32_t)(end - ptr) < len )
+                if ( (end - ptr) < len )
                 {
                     data_end = end;
                     len = data_end - ptr;
@@ -463,7 +463,9 @@ static void IMAP_ProcessServerPacket(Packet* p, IMAPData* imap_ssn)
                     data_end = ptr + len;
 
                 FilePosition position = get_file_position(p);
-                ptr = imap_ssn->mime_ssn->process_mime_data(p->flow, ptr, end, 0,
+
+                int data_len = end - ptr;
+                ptr = imap_ssn->mime_ssn->process_mime_data(p->flow, ptr, data_len, 0,
                     position);
                 if ( ptr < data_end)
                     len = len - (data_end - ptr);
index 77c6b93e35279c1340df35eb30e0dfb6467d5a0b..1122c1c3872a17ec3361b295bc3493bb097e840f 100644 (file)
@@ -53,7 +53,7 @@ NHttpFlowData::~NHttpFlowData()
 
     if (mime_state != nullptr)
     {
-        delete(mime_state);
+        delete mime_state;
     }
 
     delete_pipeline();
index 604d8a0eb5d48ee4af55a0345c12a9c6c06cf655..0b3e712f318ef8528f7650b07be7c040320ed846 100644 (file)
@@ -93,7 +93,7 @@ void NHttpMsgBody::do_file_processing()
     {
         FileFlows* file_flows = FileFlows::get_file_flows(flow);
 
-        if (file_flows && file_flows->file_process(const_cast<uint8_t*>(file_data.start), fp_length,
+        if (file_flows && file_flows->file_process(file_data.start, fp_length,
             file_position, false, false))
         {
             session_data->file_depth_remaining[source_id] -= fp_length;
@@ -107,8 +107,7 @@ void NHttpMsgBody::do_file_processing()
                     const Field& tranaction_uri = request->get_uri_norm_legacy();
                     if (tranaction_uri.length > 0)
                     {
-                        file_flows->set_file_name(const_cast<uint8_t*>(tranaction_uri.start),
-                            tranaction_uri.length);
+                        file_flows->set_file_name(tranaction_uri.start, tranaction_uri.length);
                     }
                 }
             }
@@ -119,15 +118,15 @@ void NHttpMsgBody::do_file_processing()
             session_data->file_depth_remaining[source_id] = 0;
         }
     }
-    else if (session_data->mime_state != nullptr)
+    else
     {
         session_data->mime_state->process_mime_data(flow, file_data.start,
-            file_data.start + fp_length, true, file_position);
+            fp_length, true, file_position);
 
         session_data->file_depth_remaining[source_id] -= fp_length;
         if (session_data->file_depth_remaining[source_id] == 0)
         {
-            delete(session_data->mime_state);
+            delete session_data->mime_state;
             session_data->mime_state = nullptr;
         }
     }
index abdd74778997a8e0c8f68830f86be41de6225f7e..e99c1e07909e5e404d166cb8c24442b34958f980 100644 (file)
@@ -59,7 +59,7 @@ void NHttpMsgChunk::update_flow()
 
         if ((source_id == SRC_CLIENT) && (session_data->mime_state != nullptr))
         {
-            delete(session_data->mime_state);
+            delete session_data->mime_state;
             session_data->mime_state = nullptr;
         }
     }
index efb326ad3a46630ff634612aca3f8816c0a1ba26..ce1f9144a3716ca8a9090f8fb52a5227087f8beb 100644 (file)
@@ -500,7 +500,7 @@ bool NHttpStreamSplitter::finish(Flow* flow)
         {
             session_data->mime_state->process_mime_data(flow, nullptr, 0, true,
                 SNORT_FILE_END);
-            delete(session_data->mime_state);
+            delete session_data->mime_state;
             session_data->mime_state = nullptr;
         }
         return false;
index 8fcdea7cf6db76e4a00ca763a685dc78969c9df8..7c18550b1f89de2df219e31b3bbcc6eb7d6f5169 100644 (file)
@@ -430,7 +430,8 @@ static void POP_ProcessServerPacket(Packet* p, POPData* pop_ssn)
             DebugMessage(DEBUG_POP, "DATA STATE ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n");
             //ptr = POP_HandleData(p, ptr, end);
             FilePosition position = get_file_position(p);
-            ptr = pop_ssn->mime_ssn->process_mime_data(p->flow, ptr, end, 0, position);
+            int len = end - ptr;
+            ptr = pop_ssn->mime_ssn->process_mime_data(p->flow, ptr, len, 0, position);
             continue;
         }
         POP_GetEOL(ptr, end, &eol, &eolm);
index d41568c7288496d4d5e8b5752a2bb299d6fbde11..17b802c717182143f34b405ef084ebea63d8063f 100644 (file)
@@ -170,7 +170,7 @@ SmtpFlowData::SmtpFlowData() : FlowData(flow_id)
 SmtpFlowData::~SmtpFlowData()
 {
     if (session.mime_ssn)
-        delete(session.mime_ssn);
+        delete session.mime_ssn;
 }
 
 unsigned SmtpFlowData::flow_id = 0;
@@ -1002,6 +1002,8 @@ static void SMTP_ProcessClientPacket(SMTP_PROTO_CONF* config, Packet* p, SMTPDat
     while ((ptr != NULL) && (ptr < end))
     {
         FilePosition position;
+        int len = end - ptr;
+
         switch (smtp_ssn->state)
         {
         case STATE_COMMAND:
@@ -1012,7 +1014,7 @@ static void SMTP_ProcessClientPacket(SMTP_PROTO_CONF* config, Packet* p, SMTPDat
         case STATE_BDATA:
             DebugMessage(DEBUG_SMTP, "DATA STATE ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n");
             position = get_file_position(p);
-            ptr = smtp_ssn->mime_ssn->process_mime_data(p->flow, ptr, end, 1, position);
+            ptr = smtp_ssn->mime_ssn->process_mime_data(p->flow, ptr, len, 1, position);
             //ptr = SMTP_HandleData(p, ptr, end, &(smtp_ssn->mime_ssn));
             break;
         case STATE_XEXCH50:
index 95744c5560249fb1238ba9f440d0ed7b7ab81786..2de92d083054ac1a0c8564c0da061d9e07bdc65e 100644 (file)
@@ -128,15 +128,6 @@ static inline void* SnortAlloc(unsigned long size)
     return NULL;
 }
 
-static inline void* new_calloc(size_t num, size_t size)
-{
-    void* ret_val = calloc(num, size);
-    if (ret_val == nullptr)
-        throw std::bad_alloc();
-
-    return ret_val;
-}
-
 static inline long SnortStrtol(const char* nptr, char** endptr, int base)
 {
     long iRet;