summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPeter Rajnoha <prajnoha@redhat.com>2015-07-08 13:56:06 +0200
committerPeter Rajnoha <prajnoha@redhat.com>2015-07-08 13:56:06 +0200
commit16e9b32c2f1a2d7e0f05a88981824ef0e7607965 (patch)
tree2eaf18828651b0b5e6f4a8ec6c634076594534d0
parent3b6840e0997dd4df0ea711c2036871e3cc2fe40a (diff)
downloadlvm2-16e9b32c2f1a2d7e0f05a88981824ef0e7607965.tar.gz
coverity: fix resource leaks
lib/log/log.c:115: leaked_storage: Variable "st" going out of scope leaks the storage it points to daemons/lvmpolld/lvmpolld-core.c:573: leaked_storage: Variable "cmdargv" going out of scope leaks the storage it points to daemons/lvmlockd/lvmlockd-core.c:5341: leaked_handle: Handle variable "fd" going out of scope leaks the handle daemons/lvmlockd/lvmlockctl.c:575: overwrite_var: Overwriting "able_vg_name" in "able_vg_name = strdup(optarg)" leaks the storage that "able_vg_name" points to daemons/lvmlockd/lvmlockctl.c:571: overwrite_var: Overwriting "able_vg_name" in "able_vg_name = strdup(optarg)" leaks the storage that "able_vg_name" points to daemons/lvmlockd/lvmlockctl.c:385: leaked_handle: Handle variable "s" going out of scope leaks the handle
-rw-r--r--daemons/lvmlockd/lvmlockctl.c23
-rw-r--r--daemons/lvmlockd/lvmlockd-core.c5
-rw-r--r--lib/log/log.c6
3 files changed, 20 insertions, 14 deletions
diff --git a/daemons/lvmlockd/lvmlockctl.c b/daemons/lvmlockd/lvmlockctl.c
index 5a4f3f55d..51b5734de 100644
--- a/daemons/lvmlockd/lvmlockctl.c
+++ b/daemons/lvmlockd/lvmlockctl.c
@@ -21,15 +21,15 @@
#include <sys/socket.h>
#include <sys/un.h>
-static int quit;
-static int info;
-static int dump;
-static int wait_opt;
-static int force_opt;
-static int gl_enable;
-static int gl_disable;
-static int stop_lockspaces;
-static char *able_vg_name;
+static int quit = 0;
+static int info = 0;
+static int dump = 0;
+static int wait_opt = 0;
+static int force_opt = 0;
+static int gl_enable = 0;
+static int gl_disable = 0;
+static int stop_lockspaces = 0;
+static char *able_vg_name = NULL;
#define DUMP_SOCKET_NAME "lvmlockd-dump.sock"
#define DUMP_BUF_SIZE (1024 * 1024)
@@ -381,8 +381,11 @@ static int setup_dump_socket(void)
dump_addrlen = sizeof(sa_family_t) + strlen(dump_addr.sun_path+1) + 1;
rv = bind(s, (struct sockaddr *) &dump_addr, dump_addrlen);
- if (rv < 0)
+ if (rv < 0) {
+ if (!close(s))
+ log_error("failed to close dump socket");
return rv;
+ }
return s;
}
diff --git a/daemons/lvmlockd/lvmlockd-core.c b/daemons/lvmlockd/lvmlockd-core.c
index 649c9aab6..9f3efac7a 100644
--- a/daemons/lvmlockd/lvmlockd-core.c
+++ b/daemons/lvmlockd/lvmlockd-core.c
@@ -5337,8 +5337,11 @@ static void process_listener(int poll_fd)
if (fd < 0)
return;
- if (!(cl = alloc_client()))
+ if (!(cl = alloc_client())) {
+ if (!close(fd))
+ log_error("failed to close lockd poll fd");
return;
+ }
pi = add_pollfd(fd);
if (pi < 0) {
diff --git a/lib/log/log.c b/lib/log/log.c
index 20ca29340..e3570d462 100644
--- a/lib/log/log.c
+++ b/lib/log/log.c
@@ -92,9 +92,6 @@ void init_log_file(const char *log_file, int append)
"%llu", &pid, &starttime) != 2) {
log_warn("WARNING: Cannot parse content of %s.", statfile);
} else {
- if (fclose(st))
- log_sys_debug("fclose", statfile);
-
if (dm_snprintf(_log_file_path, sizeof(_log_file_path),
"%s_%s_%d_%lld", log_file, env, pid, starttime) < 0) {
log_warn("WARNING: Debug log file path is too long for epoch.");
@@ -105,6 +102,9 @@ void init_log_file(const char *log_file, int append)
}
}
}
+
+ if (st && fclose(st))
+ log_sys_debug("fclose", statfile);
no_epoch:
if (!(_log_file = fopen(log_file, append ? "a" : "w"))) {
log_sys_error("fopen", log_file);