summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGordan Markuš <gordan.markus@pelagicore.com>2017-09-12 15:18:13 +0200
committerChristoph Lipka <clipka@users.noreply.github.com>2017-09-12 15:18:13 +0200
commit7ce0a91746ccd2f8658f3056a3e8148a627309db (patch)
tree4849dadc1151ec9aa0cce5267737dde13a7408d0
parent25c8d74f11004d97344f5c2233503be5c72b0ecd (diff)
downloadDLT-daemon-7ce0a91746ccd2f8658f3056a3e8148a627309db.tar.gz
fix various memory leaks (#28)
* dlt_common: Fix resource leak Close the file before returning from function. Signed-off-by: Gordan Markuš <gordan.markus@pelagicore.com> * dlt-kpi-process: Fix memory leak Signed-off-by: Gordan Markuš <gordan.markus@pelagicore.com> * dlt-kpi-options: Clean up resources on malloc fail Signed-off-by: Gordan Markuš <gordan.markus@pelagicore.com>
-rw-r--r--src/kpi/dlt-kpi-options.c23
-rw-r--r--src/kpi/dlt-kpi-process.c3
-rw-r--r--src/shared/dlt_common.c1
3 files changed, 13 insertions, 14 deletions
diff --git a/src/kpi/dlt-kpi-options.c b/src/kpi/dlt-kpi-options.c
index ea15961..0f6938c 100644
--- a/src/kpi/dlt-kpi-options.c
+++ b/src/kpi/dlt-kpi-options.c
@@ -117,7 +117,10 @@ void dlt_kpi_init_configuration(DltKpiConfig *config)
DltReturnValue dlt_kpi_read_configuration_file(DltKpiConfig *config, char *file_name)
{
FILE *file;
- char *line, *token, *value, *pch, *strchk;
+ char *line = NULL;
+ char *token = NULL;
+ char *value = NULL;
+ char *pch, *strchk;
int tmp;
if(config == NULL || file_name == NULL)
@@ -136,20 +139,16 @@ DltReturnValue dlt_kpi_read_configuration_file(DltKpiConfig *config, char *file_
return DLT_RETURN_ERROR;
}
- if((line = malloc(COMMAND_LINE_SIZE)) == 0)
- {
- fprintf(stderr, "%s: Out of memory!\n", __func__);
- return DLT_RETURN_ERROR;
- }
+ if(((line = malloc(COMMAND_LINE_SIZE)) == 0) ||
+ ((token = malloc(COMMAND_LINE_SIZE)) == 0) ||
+ ((value = malloc(COMMAND_LINE_SIZE)) == 0))
- if((token = malloc(COMMAND_LINE_SIZE)) == 0)
{
- fprintf(stderr, "%s: Out of memory!\n", __func__);
- return DLT_RETURN_ERROR;
- }
+ fclose(file);
+ free(line);
+ free(token);
+ free(value);
- if((value = malloc(COMMAND_LINE_SIZE)) == 0)
- {
fprintf(stderr, "%s: Out of memory!\n", __func__);
return DLT_RETURN_ERROR;
}
diff --git a/src/kpi/dlt-kpi-process.c b/src/kpi/dlt-kpi-process.c
index ad157e1..22a46e6 100644
--- a/src/kpi/dlt-kpi-process.c
+++ b/src/kpi/dlt-kpi-process.c
@@ -256,7 +256,8 @@ DltKpiProcess *dlt_kpi_clone_process(DltKpiProcess *original)
if(new_process->command_line == NULL)
{
fprintf(stderr, "%s: Out of Memory\n", __func__);
- return NULL;
+ free(new_process);
+ return NULL;
}
strncpy(new_process->command_line, original->command_line, strlen(original->command_line) + 1);
}
diff --git a/src/shared/dlt_common.c b/src/shared/dlt_common.c
index 8808801..b98c7fa 100644
--- a/src/shared/dlt_common.c
+++ b/src/shared/dlt_common.c
@@ -477,7 +477,6 @@ DltReturnValue dlt_filter_load(DltFilter *filter, const char *filename, int verb
{
snprintf(str,DLT_COMMON_BUFFER_LENGTH, "Maximum number (%d) of allowed filters reached, ignoring rest of filters!\n", DLT_FILTER_MAX);
dlt_log(LOG_WARNING, str);
- return DLT_RETURN_OK;
}
}