Fix memory leaks (#5604)
Vladimir Kobal committed
Mar 13, 2019 at 18:18 UTC
fb6def2fff1e1d333b94ee7ada25d610aee1708b
2 files changed
+7
-5
collectors/plugins.d/plugins_d.c
+5
-3
@@ -101,11 +101,13 @@ static inline int quoted_strings_splitter(char *str, char **words, int max_words
101
102
inline int pluginsd_initialize_plugin_directories() {
103
char plugins_dirs[(FILENAME_MAX * 2) + 1];
104
- char *plugins_dir_list = NULL;
104
+ static char *plugins_dir_list = NULL;
105
106
// Get the configuration entry
107
- snprintfz(plugins_dirs, FILENAME_MAX * 2, "\"%s\" \"%s/custom-plugins.d\"", PLUGINS_DIR, CONFIG_DIR);
108
- plugins_dir_list = strdupz(config_get(CONFIG_SECTION_GLOBAL, "plugins directory", plugins_dirs));
107
+ if(likely(!plugins_dir_list)) {
108
+ snprintfz(plugins_dirs, FILENAME_MAX * 2, "\"%s\" \"%s/custom-plugins.d\"", PLUGINS_DIR, CONFIG_DIR);
109
+ plugins_dir_list = strdupz(config_get(CONFIG_SECTION_GLOBAL, "plugins directory", plugins_dirs));
110
+ }
111
112
// Parse it and store it to plugin directories
113
return quoted_strings_splitter(plugins_dir_list, plugin_directories, PLUGINSD_MAX_DIRECTORIES, config_isspace);
collectors/proc.plugin/proc_stat.c
+2
-2
@@ -404,8 +404,8 @@ static int read_cpuidle_states(char *cpuidle_name_filename , char *cpuidle_time_
404
}
405
snprintfz(next_state_filename, FILENAME_MAX, cpuidle_name_filename, core, cc->cpuidle_state_len);
406
407
- cc->cpuidle_state = callocz(cc->cpuidle_state_len, sizeof(struct cpuidle_state));
408
- memset(cc->cpuidle_state, 0, sizeof(struct cpuidle_state) * cc->cpuidle_state_len);
407
+ if(likely(cc->cpuidle_state_len))
408
+ cc->cpuidle_state = callocz(cc->cpuidle_state_len, sizeof(struct cpuidle_state));
409
410
for(state = 0; state < cc->cpuidle_state_len; state++) {
411
char name_buf[50 + 1];