From addf64f1f784bb152a54b43cca86e3ecdf6851a6 Mon Sep 17 00:00:00 2001 From: Victor Julien Date: Fri, 23 Dec 2016 11:08:11 +0100 Subject: [PATCH] profiling: fix memory leaks --- src/util-profiling-keywords.c | 10 +++------- src/util-profiling-rulegroups.c | 10 +++------- src/util-profiling-rules.c | 10 +++------- src/util-profiling.c | 23 +++++++++-------------- 4 files changed, 18 insertions(+), 35 deletions(-) diff --git a/src/util-profiling-keywords.c b/src/util-profiling-keywords.c index c512727d3b..9ba367f56c 100644 --- a/src/util-profiling-keywords.c +++ b/src/util-profiling-keywords.c @@ -63,7 +63,7 @@ typedef struct SCProfileKeywordDetectCtx_ { static int profiling_keywords_output_to_file = 0; int profiling_keyword_enabled = 0; __thread int profiling_keyword_entered = 0; -static char *profiling_file_name = ""; +static char profiling_file_name[PATH_MAX]; static const char *profiling_file_mode = "a"; void SCProfilingKeywordsGlobalInit(void) @@ -80,12 +80,8 @@ void SCProfilingKeywordsGlobalInit(void) char *log_dir; log_dir = ConfigGetLogDirectory(); - profiling_file_name = SCMalloc(PATH_MAX); - if (unlikely(profiling_file_name == NULL)) { - SCLogError(SC_ERR_MEM_ALLOC, "can't duplicate file name"); - exit(EXIT_FAILURE); - } - snprintf(profiling_file_name, PATH_MAX, "%s/%s", log_dir, filename); + snprintf(profiling_file_name, sizeof(profiling_file_name), "%s/%s", + log_dir, filename); const char *v = ConfNodeLookupChildValue(conf, "append"); if (v == NULL || ConfValIsTrue(v)) { diff --git a/src/util-profiling-rulegroups.c b/src/util-profiling-rulegroups.c index 1bbf4f7961..8f69338a13 100644 --- a/src/util-profiling-rulegroups.c +++ b/src/util-profiling-rulegroups.c @@ -64,7 +64,7 @@ typedef struct SCProfileSghDetectCtx_ { static int profiling_sghs_output_to_file = 0; int profiling_sghs_enabled = 0; -static char *profiling_file_name = ""; +static char profiling_file_name[PATH_MAX]; static const char *profiling_file_mode = "a"; #ifdef HAVE_LIBJANSSON static int profiling_rulegroup_json = 0; @@ -84,12 +84,8 @@ void SCProfilingSghsGlobalInit(void) char *log_dir; log_dir = ConfigGetLogDirectory(); - profiling_file_name = SCMalloc(PATH_MAX); - if (unlikely(profiling_file_name == NULL)) { - SCLogError(SC_ERR_MEM_ALLOC, "can't duplicate file name"); - exit(EXIT_FAILURE); - } - snprintf(profiling_file_name, PATH_MAX, "%s/%s", log_dir, filename); + snprintf(profiling_file_name, sizeof(profiling_file_name), + "%s/%s", log_dir, filename); const char *v = ConfNodeLookupChildValue(conf, "append"); if (v == NULL || ConfValIsTrue(v)) { diff --git a/src/util-profiling-rules.c b/src/util-profiling-rules.c index fbfa491b78..49d1199ede 100644 --- a/src/util-profiling-rules.c +++ b/src/util-profiling-rules.c @@ -79,7 +79,7 @@ typedef struct SCProfileSummary_ { extern int profiling_output_to_file; int profiling_rules_enabled = 0; -static char *profiling_file_name = ""; +static char profiling_file_name[PATH_MAX] = ""; static const char *profiling_file_mode = "a"; #ifdef HAVE_LIBJANSSON static int profiling_rule_json = 0; @@ -165,12 +165,8 @@ void SCProfilingRulesGlobalInit(void) char *log_dir; log_dir = ConfigGetLogDirectory(); - profiling_file_name = SCMalloc(PATH_MAX); - if (unlikely(profiling_file_name == NULL)) { - SCLogError(SC_ERR_MEM_ALLOC, "can't duplicate file name"); - exit(EXIT_FAILURE); - } - snprintf(profiling_file_name, PATH_MAX, "%s/%s", log_dir, filename); + snprintf(profiling_file_name, sizeof(profiling_file_name), + "%s/%s", log_dir, filename); const char *v = ConfNodeLookupChildValue(conf, "append"); if (v == NULL || ConfValIsTrue(v)) { diff --git a/src/util-profiling.c b/src/util-profiling.c index 122db86ea9..9cbe49de35 100644 --- a/src/util-profiling.c +++ b/src/util-profiling.c @@ -102,14 +102,14 @@ static SCProfilePacketData prefilter6[256][256]; struct ProfileProtoRecords packet_profile_flowworker_data[PROFILE_FLOWWORKER_SIZE]; int profiling_packets_enabled = 0; -int profiling_packets_csv_enabled = 0; - int profiling_output_to_file = 0; -int profiling_packets_output_to_file = 0; -char *profiling_file_name; -char *profiling_packets_file_name; -char *profiling_csv_file_name; -const char *profiling_packets_file_mode = "a"; + +static int profiling_packets_csv_enabled = 0; +static int profiling_packets_output_to_file = 0; +static char *profiling_file_name; +static char profiling_packets_file_name[PATH_MAX]; +static char *profiling_csv_file_name; +static const char *profiling_packets_file_mode = "a"; static int rate = 1; static SC_ATOMIC_DECLARE(uint64_t, samples); @@ -187,13 +187,8 @@ SCProfilingInit(void) char *log_dir; log_dir = ConfigGetLogDirectory(); - profiling_packets_file_name = SCMalloc(PATH_MAX); - if (unlikely(profiling_packets_file_name == NULL)) { - SCLogError(SC_ERR_MEM_ALLOC, "can't duplicate file name"); - exit(EXIT_FAILURE); - } - - snprintf(profiling_packets_file_name, PATH_MAX, "%s/%s", log_dir, filename); + snprintf(profiling_packets_file_name, sizeof(profiling_packets_file_name), + "%s/%s", log_dir, filename); const char *v = ConfNodeLookupChildValue(conf, "append"); if (v == NULL || ConfValIsTrue(v)) {