diff options
author | Gordan Markuš <gordan.markus@pelagicore.com> | 2017-09-12 15:18:13 +0200 |
---|---|---|
committer | Christoph Lipka <clipka@users.noreply.github.com> | 2017-09-12 15:18:13 +0200 |
commit | 7ce0a91746ccd2f8658f3056a3e8148a627309db (patch) | |
tree | 4849dadc1151ec9aa0cce5267737dde13a7408d0 | |
parent | 25c8d74f11004d97344f5c2233503be5c72b0ecd (diff) | |
download | DLT-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.c | 23 | ||||
-rw-r--r-- | src/kpi/dlt-kpi-process.c | 3 | ||||
-rw-r--r-- | src/shared/dlt_common.c | 1 |
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; } } |