From f430517e3178a5e038c51617505693edd1a7b64e Mon Sep 17 00:00:00 2001 From: Alasdair Kergon Date: Wed, 10 May 2006 16:23:41 +0000 Subject: [PATCH] coverity fixes --- WHATS_NEW | 1 + lib/libdm-common.c | 4 +++- lib/libdm-file.c | 14 ++++++++------ 3 files changed, 12 insertions(+), 7 deletions(-) diff --git a/WHATS_NEW b/WHATS_NEW index 7726d03..b4be42b 100644 --- a/WHATS_NEW +++ b/WHATS_NEW @@ -1,5 +1,6 @@ Version 1.02.06 - ============================= + Fix leaks in error paths found by coverity. Increase dmsetup line buffer to 4k. Version 1.02.05 - 19 Apr 2006 diff --git a/lib/libdm-common.c b/lib/libdm-common.c index 0b2e3c2..71b11ff 100644 --- a/lib/libdm-common.c +++ b/lib/libdm-common.c @@ -101,8 +101,10 @@ struct dm_task *dm_task_create(int type) return NULL; } - if (!dm_check_version()) + if (!dm_check_version()) { + dm_free(dmt); return NULL; + } memset(dmt, 0, sizeof(*dmt)); diff --git a/lib/libdm-file.c b/lib/libdm-file.c index dbbca59..54c38b4 100644 --- a/lib/libdm-file.c +++ b/lib/libdm-file.c @@ -23,7 +23,7 @@ static int _create_dir_recursive(const char *dir) { char *orig, *s; - int rc; + int rc, r = 0; log_verbose("Creating directory \"%s\"", dir); /* Create parent directories */ @@ -35,22 +35,24 @@ static int _create_dir_recursive(const char *dir) if (rc < 0 && errno != EEXIST) { log_error("%s: mkdir failed: %s", orig, strerror(errno)); - dm_free(orig); - return 0; + goto out; } } *s++ = '/'; } - dm_free(orig); /* Create final directory */ rc = mkdir(dir, 0777); if (rc < 0 && errno != EEXIST) { log_error("%s: mkdir failed: %s", orig, strerror(errno)); - return 0; + goto out; } - return 1; + + r = 1; +out: + dm_free(orig); + return r; } int create_dir(const char *dir) -- 2.43.5