]> git.ipfire.org Git - thirdparty/suricata.git/commitdiff
profiling: fix memory leaks
authorVictor Julien <victor@inliniac.net>
Fri, 23 Dec 2016 10:08:11 +0000 (11:08 +0100)
committerVictor Julien <victor@inliniac.net>
Mon, 30 Jan 2017 16:47:50 +0000 (17:47 +0100)
src/util-profiling-keywords.c
src/util-profiling-rulegroups.c
src/util-profiling-rules.c
src/util-profiling.c

index c512727d3b83125245766118ef76ace4bc639cb2..9ba367f56cf0e0b073b007f4564b39cda793b0d9 100644 (file)
@@ -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)) {
index 1bbf4f7961f14fb1ac36fb32d7f9abecb6691f6d..8f69338a1313106ecfc650ec6734bc7402bea7c1 100644 (file)
@@ -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)) {
index fbfa491b787172fd9cd33df6df2f0cc54b81b57d..49d1199eded49f1b7d5eee90f4387f57ce4ec157 100644 (file)
@@ -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)) {
index 122db86ea9972eaafd60479914c290ef1f7acf2f..9cbe49de35564d9d6f3dfa16ecffc90034caa143 100644 (file)
@@ -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)) {