From 3daf272b9f51fdde6ac0a279a0ebfde5f5a957e1 Mon Sep 17 00:00:00 2001 From: "Tom Peters (thopeter)" Date: Tue, 29 Aug 2017 15:21:11 -0400 Subject: [PATCH] Merge pull request #1000 in SNORT/snort3 from appid_lua_api to master Squashed commit of the following: commit 7b72de2271ba9a9e6d1ff5d6482a4c61911bb76c Author: davis mcpherson 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 | 15 +++++++-------- src/network_inspectors/appid/appid_discovery.h | 2 +- .../appid/appid_http_session.cc | 3 +++ 3 files changed, 11 insertions(+), 9 deletions(-) diff --git a/src/network_inspectors/appid/appid_discovery.cc b/src/network_inspectors/appid/appid_discovery.cc index 07f4deea2..2715472d1 100644 --- a/src/network_inspectors/appid/appid_discovery.cc +++ b/src/network_inspectors/appid/appid_discovery.cc @@ -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&) diff --git a/src/network_inspectors/appid/appid_discovery.h b/src/network_inspectors/appid/appid_discovery.h index dbbf80f38..19712cf38 100644 --- a/src/network_inspectors/appid/appid_discovery.h +++ b/src/network_inspectors/appid/appid_discovery.h @@ -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, diff --git a/src/network_inspectors/appid/appid_http_session.cc b/src/network_inspectors/appid/appid_http_session.cc index 7f8505921..14d6de2ef 100644 --- a/src/network_inspectors/appid/appid_http_session.cc +++ b/src/network_inspectors/appid/appid_http_session.cc @@ -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 ) { -- 2.47.3