main - cov: ignore leak of fd descriptor
by Zdenek Kabelac
Gitweb: https://sourceware.org/git/?p=lvm2.git;a=commitdiff;h=b0d40109a67a99bf568...
Commit: b0d40109a67a99bf568c168a31f37955a07d7da4
Parent: e6d35874827f14d392c4ba4f8608eb0444230c7b
Author: Zdenek Kabelac <zkabelac(a)redhat.com>
AuthorDate: Tue Sep 21 20:20:53 2021 +0200
Committer: Zdenek Kabelac <zkabelac(a)redhat.com>
CommitterDate: Tue Sep 21 21:03:47 2021 +0200
cov: ignore leak of fd descriptor
There is no 'fd' leak.
---
libdm/dm-tools/dmfilemapd.c | 9 ++++-----
1 file changed, 4 insertions(+), 5 deletions(-)
diff --git a/libdm/dm-tools/dmfilemapd.c b/libdm/dm-tools/dmfilemapd.c
index d7ca71d7e..d547e59d5 100644
--- a/libdm/dm-tools/dmfilemapd.c
+++ b/libdm/dm-tools/dmfilemapd.c
@@ -671,12 +671,11 @@ static int _daemonise(struct filemap_monitor *fm)
(void) close(fd);
}
/* TODO: Use libdaemon/server/daemon-server.c _daemonise() */
- for (ffd = (int) sysconf(_SC_OPEN_MAX) - 1; ffd > STDERR_FILENO; --ffd) {
- if (ffd == fm->fd)
- continue;
- (void) close(ffd);
- }
+ for (ffd = (int) sysconf(_SC_OPEN_MAX) - 1; ffd > STDERR_FILENO; --ffd)
+ if (ffd != fm->fd)
+ (void) close(ffd);
+ /* coverity[leaked_handle] no leak */
return 1;
}
2 years, 2 months
main - cov: check dev_get_size result
by Zdenek Kabelac
Gitweb: https://sourceware.org/git/?p=lvm2.git;a=commitdiff;h=e6d35874827f14d392c...
Commit: e6d35874827f14d392c4ba4f8608eb0444230c7b
Parent: 30e27d2f8b8fbe3031c0e2863a22c77b577019a0
Author: Zdenek Kabelac <zkabelac(a)redhat.com>
AuthorDate: Tue Sep 21 18:50:26 2021 +0200
Committer: Zdenek Kabelac <zkabelac(a)redhat.com>
CommitterDate: Tue Sep 21 21:03:47 2021 +0200
cov: check dev_get_size result
Check we have obtained some device size out of dev_get_size().
---
tools/pvscan.c | 8 ++++++--
1 file changed, 6 insertions(+), 2 deletions(-)
diff --git a/tools/pvscan.c b/tools/pvscan.c
index b19b74b3e..a0be17e8e 100644
--- a/tools/pvscan.c
+++ b/tools/pvscan.c
@@ -1268,8 +1268,12 @@ static int _online_devs(struct cmd_context *cmd, int do_all, struct dm_list *pvs
}
devsize = dev->size;
- if (!devsize)
- dev_get_size(dev, &devsize);
+ if (!devsize &&
+ !dev_get_size(dev, &devsize)) {
+ log_print("pvscan[%d] PV %s can get device size.", getpid(), dev_name(dev));
+ release_vg(vg);
+ continue;
+ }
do_full_check = 0;
/* If use_full_md_check is set then this has already been done by filter. */
2 years, 2 months
main - cov: sanitize function environment
by Zdenek Kabelac
Gitweb: https://sourceware.org/git/?p=lvm2.git;a=commitdiff;h=30e27d2f8b8fbe3031c...
Commit: 30e27d2f8b8fbe3031c0e2863a22c77b577019a0
Parent: a13dfcbc77bcfdb4bfcff659fde8e11f73225643
Author: Zdenek Kabelac <zkabelac(a)redhat.com>
AuthorDate: Tue Sep 21 18:46:52 2021 +0200
Committer: Zdenek Kabelac <zkabelac(a)redhat.com>
CommitterDate: Tue Sep 21 21:03:47 2021 +0200
cov: sanitize function environment
Coverity can see that function is either used with 'dev' or 'def'.
---
tools/pvck.c | 3 +++
1 file changed, 3 insertions(+)
diff --git a/tools/pvck.c b/tools/pvck.c
index 0d1bc1b17..b96b1c784 100644
--- a/tools/pvck.c
+++ b/tools/pvck.c
@@ -379,6 +379,9 @@ static bool _read_bytes(struct device *dev, struct devicefile *def, uint64_t sta
if (dev)
return dev_read_bytes(dev, start, len, data);
+ if (!def)
+ return false;
+
off = lseek(def->fd, start, SEEK_SET);
if (off != start)
return false;
2 years, 2 months
main - cov: check for function result
by Zdenek Kabelac
Gitweb: https://sourceware.org/git/?p=lvm2.git;a=commitdiff;h=a13dfcbc77bcfdb4bfc...
Commit: a13dfcbc77bcfdb4bfcff659fde8e11f73225643
Parent: 7bd55f8c152041101a27c83a96b794fdbb366460
Author: Zdenek Kabelac <zkabelac(a)redhat.com>
AuthorDate: Tue Sep 21 18:45:08 2021 +0200
Committer: Zdenek Kabelac <zkabelac(a)redhat.com>
CommitterDate: Tue Sep 21 21:03:47 2021 +0200
cov: check for function result
---
test/unit/radix_tree_t.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/test/unit/radix_tree_t.c b/test/unit/radix_tree_t.c
index be24ce76d..b80e4f8ab 100644
--- a/test/unit/radix_tree_t.c
+++ b/test/unit/radix_tree_t.c
@@ -800,7 +800,7 @@ static void __invalidate(struct radix_tree *rt, int fd)
k.parts.fd = fd;
radix_tree_remove_prefix(rt, k.bytes, k.bytes + sizeof(k.parts.fd));
- radix_tree_is_well_formed(rt);
+ T_ASSERT(radix_tree_is_well_formed(rt));
}
static void test_bcache_scenario3(void *fixture)
2 years, 2 months
main - cov: check strchr for NULL
by Zdenek Kabelac
Gitweb: https://sourceware.org/git/?p=lvm2.git;a=commitdiff;h=7bd55f8c152041101a2...
Commit: 7bd55f8c152041101a27c83a96b794fdbb366460
Parent: 377e326156c74ef7aa7f5ac286bdabe3143a0b49
Author: Zdenek Kabelac <zkabelac(a)redhat.com>
AuthorDate: Tue Sep 21 18:24:30 2021 +0200
Committer: Zdenek Kabelac <zkabelac(a)redhat.com>
CommitterDate: Tue Sep 21 21:03:47 2021 +0200
cov: check strchr for NULL
Although unlikely, ensuring coverity we not use NULL.
---
daemons/lvmlockd/lvmlockd-dlm.c | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/daemons/lvmlockd/lvmlockd-dlm.c b/daemons/lvmlockd/lvmlockd-dlm.c
index 68d18607c..1305c3dc2 100644
--- a/daemons/lvmlockd/lvmlockd-dlm.c
+++ b/daemons/lvmlockd/lvmlockd-dlm.c
@@ -801,7 +801,8 @@ int lm_refresh_lv_start_dlm(struct action *act)
strncpy(path, act->path, PATH_MAX-1);
/* skip past dev */
- p = strchr(path + 1, '/');
+ if (!(p = strchr(path + 1, '/')))
+ return -EINVAL;
/* skip past slashes */
while (*p == '/')
2 years, 2 months
main - cov: ensuring buffer is zeroed
by Zdenek Kabelac
Gitweb: https://sourceware.org/git/?p=lvm2.git;a=commitdiff;h=377e326156c74ef7aa7...
Commit: 377e326156c74ef7aa7f5ac286bdabe3143a0b49
Parent: 8c4459782000ffe8b6c21a710e15464f5905ab3a
Author: Zdenek Kabelac <zkabelac(a)redhat.com>
AuthorDate: Tue Sep 21 18:13:05 2021 +0200
Committer: Zdenek Kabelac <zkabelac(a)redhat.com>
CommitterDate: Tue Sep 21 21:03:47 2021 +0200
cov: ensuring buffer is zeroed
---
daemons/lvmlockd/lvmlockctl.c | 1 +
daemons/lvmlockd/lvmlockd-dlm.c | 1 +
2 files changed, 2 insertions(+)
diff --git a/daemons/lvmlockd/lvmlockctl.c b/daemons/lvmlockd/lvmlockctl.c
index 32da99c6d..45569e694 100644
--- a/daemons/lvmlockd/lvmlockctl.c
+++ b/daemons/lvmlockd/lvmlockctl.c
@@ -457,6 +457,7 @@ retry:
if (count < dump_len)
goto retry;
+ dump_buf[count] = 0;
rv = 0;
if ((info && dump) || !strcmp(req_name, "dump"))
printf("%s\n", dump_buf);
diff --git a/daemons/lvmlockd/lvmlockd-dlm.c b/daemons/lvmlockd/lvmlockd-dlm.c
index 67e7bee03..68d18607c 100644
--- a/daemons/lvmlockd/lvmlockd-dlm.c
+++ b/daemons/lvmlockd/lvmlockd-dlm.c
@@ -119,6 +119,7 @@ static int read_cluster_name(char *clustername)
log_error(close_error_msg, fd);
return rv;
}
+ clustername[rv] = 0;
n = strstr(clustername, "\n");
if (n)
2 years, 2 months
main - gcc-fanalyzer: zallocate memory for clean buffer
by Zdenek Kabelac
Gitweb: https://sourceware.org/git/?p=lvm2.git;a=commitdiff;h=8c4459782000ffe8b6c...
Commit: 8c4459782000ffe8b6c21a710e15464f5905ab3a
Parent: 4ef8f7cde6ea481f96f101dc6189979cf3674cfe
Author: Zdenek Kabelac <zkabelac(a)redhat.com>
AuthorDate: Tue Sep 21 18:36:44 2021 +0200
Committer: Zdenek Kabelac <zkabelac(a)redhat.com>
CommitterDate: Tue Sep 21 21:03:47 2021 +0200
gcc-fanalyzer: zallocate memory for clean buffer
---
lib/label/hints.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/lib/label/hints.c b/lib/label/hints.c
index 47236a15a..3dba9f8ec 100644
--- a/lib/label/hints.c
+++ b/lib/label/hints.c
@@ -821,7 +821,7 @@ static int _read_hint_file(struct cmd_context *cmd, struct dm_list *hints, int *
if (!dm_strncpy(hint.vgname, vgname + 3, sizeof(hint.vgname)))
continue;
- if (!(alloc_hint = malloc(sizeof(struct hint)))) {
+ if (!(alloc_hint = zalloc(sizeof(struct hint)))) {
ret = 0;
break;
}
2 years, 2 months
main - gcc-fanalyzer: remove unneded zeroing
by Zdenek Kabelac
Gitweb: https://sourceware.org/git/?p=lvm2.git;a=commitdiff;h=4ef8f7cde6ea481f96f...
Commit: 4ef8f7cde6ea481f96f101dc6189979cf3674cfe
Parent: 178df1c8f4aa6fa73f9f55f2a7f5f7b8c8c0964d
Author: Zdenek Kabelac <zkabelac(a)redhat.com>
AuthorDate: Tue Sep 21 18:09:45 2021 +0200
Committer: Zdenek Kabelac <zkabelac(a)redhat.com>
CommitterDate: Tue Sep 21 21:03:47 2021 +0200
gcc-fanalyzer: remove unneded zeroing
Since we zallocate array here, we don't need to set to NULL
and clean gcc warning about strdup leakage.
---
daemons/dmeventd/dmeventd.c | 1 -
1 file changed, 1 deletion(-)
diff --git a/daemons/dmeventd/dmeventd.c b/daemons/dmeventd/dmeventd.c
index 46b3ff12f..d89ab4af8 100644
--- a/daemons/dmeventd/dmeventd.c
+++ b/daemons/dmeventd/dmeventd.c
@@ -2085,7 +2085,6 @@ static void _restart_dmeventd(void)
}
message += strlen(message) + 1;
}
- _initial_registrations[count] = NULL;
if (version >= 2) {
if (daemon_talk(&fifos, &msg, DM_EVENT_CMD_GET_PARAMETERS, "-", "-", 0, 0)) {
2 years, 2 months
main - gcc-fanalyzer: helping understand answer is not null
by Zdenek Kabelac
Gitweb: https://sourceware.org/git/?p=lvm2.git;a=commitdiff;h=178df1c8f4aa6fa73f9...
Commit: 178df1c8f4aa6fa73f9f55f2a7f5f7b8c8c0964d
Parent: 462ac47003e14975b91832f19bc287bd1a775bb4
Author: Zdenek Kabelac <zkabelac(a)redhat.com>
AuthorDate: Tue Sep 21 18:32:21 2021 +0200
Committer: Zdenek Kabelac <zkabelac(a)redhat.com>
CommitterDate: Tue Sep 21 21:03:47 2021 +0200
gcc-fanalyzer: helping understand answer is not null
gcc can't easily see pointer 'answer' is only being checked once 'ret > 0'.
---
lib/display/display.c | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/lib/display/display.c b/lib/display/display.c
index f9c9ef836..3c2c2c2bc 100644
--- a/lib/display/display.c
+++ b/lib/display/display.c
@@ -974,7 +974,7 @@ char yes_no_prompt(const char *prompt, ...)
c = tolower(c);
- if ((ret > 0) && (c == answer[0]))
+ if ((ret > 0) && answer && (c == answer[0]))
answer++; /* Matching, next char */
else if (c == '\n') {
if (feof(stdin))
@@ -1000,7 +1000,7 @@ char yes_no_prompt(const char *prompt, ...)
/* Ignore any whitespace before */
--i;
goto nextchar;
- } else if ((ret > 0) && isspace(c)) {
+ } else if ((ret > 0) && answer && isspace(c)) {
/* Ignore any whitespace after */
while (*answer)
answer++; /* jump to end-of-word */
2 years, 2 months
main - clang: check for buffer existance
by Zdenek Kabelac
Gitweb: https://sourceware.org/git/?p=lvm2.git;a=commitdiff;h=462ac47003e14975b91...
Commit: 462ac47003e14975b91832f19bc287bd1a775bb4
Parent: bb6fd1a15f32d79ddaa351704dea47ad9e5ab9be
Author: Zdenek Kabelac <zkabelac(a)redhat.com>
AuthorDate: Tue Sep 21 18:07:41 2021 +0200
Committer: Zdenek Kabelac <zkabelac(a)redhat.com>
CommitterDate: Tue Sep 21 21:03:47 2021 +0200
clang: check for buffer existance
Make obvious to analyzer we can't get NULL here.
---
daemons/dmeventd/dmeventd.c | 3 +++
1 file changed, 3 insertions(+)
diff --git a/daemons/dmeventd/dmeventd.c b/daemons/dmeventd/dmeventd.c
index 75672a7fd..46b3ff12f 100644
--- a/daemons/dmeventd/dmeventd.c
+++ b/daemons/dmeventd/dmeventd.c
@@ -678,6 +678,9 @@ static int _get_status(struct message_data *message_data)
char **buffers;
char *message;
+ if (!message_data->id)
+ return -EINVAL;
+
_lock_mutex();
count = dm_list_size(&_thread_registry);
buffers = alloca(sizeof(char*) * count);
2 years, 2 months