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 /src/kpi | |
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>
Diffstat (limited to 'src/kpi')
-rw-r--r-- | src/kpi/dlt-kpi-options.c | 23 | ||||
-rw-r--r-- | src/kpi/dlt-kpi-process.c | 3 |
2 files changed, 13 insertions, 13 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); } |