]> git.ipfire.org Git - thirdparty/snort3.git/commitdiff
Merge pull request #1000 in SNORT/snort3 from appid_lua_api to master
authorTom Peters (thopeter) <thopeter@cisco.com>
Tue, 29 Aug 2017 19:21:11 +0000 (15:21 -0400)
committerTom Peters (thopeter) <thopeter@cisco.com>
Tue, 29 Aug 2017 19:21:11 +0000 (15:21 -0400)
Squashed commit of the following:

commit 7b72de2271ba9a9e6d1ff5d6482a4c61911bb76c
Author: davis mcpherson <davmcphe.cisco.com>
Date:   Mon Aug 28 13:55:44 2017 -0400

    fix memory leak in http pattern matching, minor cleanups

src/network_inspectors/appid/appid_discovery.cc
src/network_inspectors/appid/appid_discovery.h
src/network_inspectors/appid/appid_http_session.cc

index 07f4deea2f00dab6ef02012bdee2c5fdb094ce56..2715472d1b890d1a6fdfe7a3a164fad933db625c 100644 (file)
@@ -103,14 +103,13 @@ void AppIdDiscovery::register_detector(std::string name, AppIdDetector* cd,  IpP
 }
 
 void AppIdDiscovery::add_pattern_data(AppIdDetector* detector, SearchTool* st, int position, const
-    uint8_t* const pattern, unsigned size, unsigned nocase, int* count)
+    uint8_t* const pattern, unsigned size, unsigned nocase)
 {
-    AppIdPatternMatchNode* pd = (AppIdPatternMatchNode*)snort_calloc(
-        sizeof(AppIdPatternMatchNode));
+    AppIdPatternMatchNode* pd =
+        (AppIdPatternMatchNode*)snort_calloc(sizeof(AppIdPatternMatchNode));
     pd->service = detector;
     pd->pattern_start_pos = position;
     pd->size = size;
-    (*count)++;
     pd->next = pattern_data_list;
     pattern_data_list = pd;
     st->add((const char*)pattern, size, pd, nocase);
@@ -119,15 +118,15 @@ void AppIdDiscovery::add_pattern_data(AppIdDetector* detector, SearchTool* st, i
 void AppIdDiscovery::register_tcp_pattern(AppIdDetector* detector, const uint8_t* const pattern,
     unsigned size, int position, unsigned nocase)
 {
-    int* count = &tcp_pattern_count;
-    add_pattern_data(detector, tcp_patterns, position, pattern, size, nocase, count);
+    tcp_pattern_count++;
+    add_pattern_data(detector, tcp_patterns, position, pattern, size, nocase);
 }
 
 void AppIdDiscovery::register_udp_pattern(AppIdDetector* detector, const uint8_t* const pattern,
     unsigned size, int position, unsigned nocase)
 {
-    int* count = &udp_pattern_count;
-    add_pattern_data(detector, udp_patterns, position, pattern, size, nocase, count);
+    udp_pattern_count++;
+    add_pattern_data(detector, udp_patterns, position, pattern, size, nocase);
 }
 
 int AppIdDiscovery::add_service_port(AppIdDetector*, const ServiceDetectorPort&)
index dbbf80f38a11087890f716eb8644c3e837bfadb0..19712cf38abcc8f00823b5ad96ecb7dff8ba52bc 100644 (file)
@@ -75,7 +75,7 @@ public:
     virtual void initialize() = 0;
     virtual void register_detector(std::string, AppIdDetector*,  IpProtocol);
     virtual void add_pattern_data(AppIdDetector*, SearchTool*, int position,
-        const uint8_t* const pattern, unsigned size, unsigned nocase, int* count);
+        const uint8_t* const pattern, unsigned size, unsigned nocase);
     virtual void register_tcp_pattern(AppIdDetector*, const uint8_t* const pattern, unsigned size,
         int position, unsigned nocase);
     virtual void register_udp_pattern(AppIdDetector*, const uint8_t* const pattern, unsigned size,
index 7f8505921f9c2a46b147f0e45ecd3bc37a319021..14d6de2ef8086907bae31d816574540d01d0b15e 100644 (file)
@@ -318,7 +318,10 @@ void AppIdHttpSession::process_chp_buffers()
                 asd->set_payload_app_id_data((ApplicationId)chp_final, version);
 
             if ( version )
+            {
+                snort_free(version);
                 version = nullptr;
+            }
 
             if ( user )
             {