Gitweb:
http://git.fedorahosted.org/git/?p=lvm2.git;a=commitdiff;h=94f78e0183e251...
Commit: 94f78e0183e2517199e19d0473a7d5480660db0a
Parent: 3d26d283ea7234ee3e4499b53f185696e0c5e15c
Author: Peter Rajnoha <prajnoha(a)redhat.com>
AuthorDate: Tue Mar 22 16:03:51 2016 +0100
Committer: Peter Rajnoha <prajnoha(a)redhat.com>
CommitterDate: Tue Mar 22 16:03:55 2016 +0100
coverity: fix some issues reported by coverity for recent code
---
lib/device/dev-cache.c | 19 ++++++++++---------
lib/metadata/metadata.c | 15 ++++++++++-----
2 files changed, 20 insertions(+), 14 deletions(-)
diff --git a/lib/device/dev-cache.c b/lib/device/dev-cache.c
index 06438d9..c0267a9 100644
--- a/lib/device/dev-cache.c
+++ b/lib/device/dev-cache.c
@@ -366,6 +366,7 @@ static int _get_sysfs_value(const char *path, char *buf, size_t
buf_size)
{
FILE *fp;
size_t len;
+ int r = 0;
if (!(fp = fopen(path, "r"))) {
log_sys_error("fopen", path);
@@ -374,23 +375,23 @@ static int _get_sysfs_value(const char *path, char *buf, size_t
buf_size)
if (!fgets(buf, buf_size, fp)) {
log_sys_error("fgets", path);
- if (fclose(fp))
- log_sys_error("fclose", path);
- return 0;
+ goto out;
}
if (!(len = strlen(buf)) || (len == 1 && buf[0] == '\n')) {
log_error("_get_sysfs_value: %s: no value", path);
- return 0;
+ goto out;
}
if (buf[len - 1] == '\n')
buf[len - 1] = '\0';
+ r = 1;
+out:
if (fclose(fp))
log_sys_error("fclose", path);
- return 1;
+ return r;
}
static int _get_dm_uuid_from_sysfs(char *buf, size_t buf_size, int major, int minor)
@@ -427,14 +428,14 @@ static struct dm_list *_get_or_add_list_by_index_key(struct
dm_hash_table *idx,
return list;
}
-static struct device *_get_device_for_sysfs_dev_name_using_devno(const char *dev_name)
+static struct device *_get_device_for_sysfs_dev_name_using_devno(const char *devname)
{
char path[PATH_MAX];
char buf[PATH_MAX];
int major, minor;
- if (dm_snprintf(path, sizeof(path), "%sblock/%s/dev", dm_sysfs_dir(),
dev_name) < 0) {
- log_error("_get_device_for_non_dm_dev: %s: dm_snprintf failed", dev_name);
+ if (dm_snprintf(path, sizeof(path), "%sblock/%s/dev", dm_sysfs_dir(), devname)
< 0) {
+ log_error("_get_device_for_non_dm_dev: %s: dm_snprintf failed", devname);
return NULL;
}
@@ -442,7 +443,7 @@ static struct device *_get_device_for_sysfs_dev_name_using_devno(const
char *dev
return_NULL;
if (sscanf(buf, "%d:%d", &major, &minor) != 2) {
- log_error("_get_device_for_non_dm_dev: %s: failed to get major and minor
number", dev_name);
+ log_error("_get_device_for_non_dm_dev: %s: failed to get major and minor
number", devname);
return NULL;
}
diff --git a/lib/metadata/metadata.c b/lib/metadata/metadata.c
index 2c5ede5..ecdb5af 100644
--- a/lib/metadata/metadata.c
+++ b/lib/metadata/metadata.c
@@ -4600,8 +4600,10 @@ static int _check_devs_used_correspond_with_lv(struct dm_pool *mem,
struct dm_li
if (!found_inconsistent) {
dm_pool_begin_object(mem, 32);
found_inconsistent = 1;
- } else
- dm_pool_grow_object(mem, DEV_LIST_DELIM, sizeof(DEV_LIST_DELIM) - 1);
+ } else {
+ if (!dm_pool_grow_object(mem, DEV_LIST_DELIM, sizeof(DEV_LIST_DELIM) - 1))
+ goto_bad;
+ }
if (!dm_pool_grow_object(mem, dev_name(dev), 0))
goto_bad;
}
@@ -4610,7 +4612,8 @@ static int _check_devs_used_correspond_with_lv(struct dm_pool *mem,
struct dm_li
if (!found_inconsistent)
return 1;
- dm_pool_grow_object(mem, "\0", 1);
+ if (!dm_pool_grow_object(mem, "\0", 1))
+ goto_bad;
used_devnames = dm_pool_end_object(mem);
found_inconsistent = 0;
@@ -4628,7 +4631,8 @@ static int _check_devs_used_correspond_with_lv(struct dm_pool *mem,
struct dm_li
dm_pool_begin_object(mem, 32);
found_inconsistent = 1;
} else {
- dm_pool_grow_object(mem, DEV_LIST_DELIM, sizeof(DEV_LIST_DELIM) - 1);
+ if (!dm_pool_grow_object(mem, DEV_LIST_DELIM, sizeof(DEV_LIST_DELIM) - 1))
+ goto_bad;
}
if (!dm_pool_grow_object(mem, dev_name(dev), 0))
goto bad;
@@ -4638,7 +4642,8 @@ static int _check_devs_used_correspond_with_lv(struct dm_pool *mem,
struct dm_li
}
if (found_inconsistent) {
- dm_pool_grow_object(mem, "\0", 1);
+ if (!dm_pool_grow_object(mem, "\0", 1))
+ goto_bad;
assumed_devnames = dm_pool_end_object(mem);
}