summaryrefslogtreecommitdiffstats
path: root/daemons/clvmd/clvmd-singlenode.c
diff options
context:
space:
mode:
Diffstat (limited to 'daemons/clvmd/clvmd-singlenode.c')
-rw-r--r--daemons/clvmd/clvmd-singlenode.c14
1 files changed, 8 insertions, 6 deletions
diff --git a/daemons/clvmd/clvmd-singlenode.c b/daemons/clvmd/clvmd-singlenode.c
index 298abcb2..3b35bf59 100644
--- a/daemons/clvmd/clvmd-singlenode.c
+++ b/daemons/clvmd/clvmd-singlenode.c
@@ -48,8 +48,15 @@ static void close_comms(void)
static int init_comms(void)
{
- struct sockaddr_un addr;
mode_t old_mask;
+ struct sockaddr_un addr = { .sun_family = AF_UNIX };
+
+ if (!dm_strncpy(addr.sun_path, SINGLENODE_CLVMD_SOCKNAME,
+ sizeof(addr.sun_path))) {
+ DEBUGLOG("%s: singlenode socket name too long.",
+ SINGLENODE_CLVMD_SOCKNAME);
+ return -1;
+ }
close_comms();
@@ -67,11 +74,6 @@ static int init_comms(void)
goto error;
}
- memset(&addr, 0, sizeof(addr));
- memcpy(addr.sun_path, SINGLENODE_CLVMD_SOCKNAME,
- sizeof(SINGLENODE_CLVMD_SOCKNAME));
- addr.sun_family = AF_UNIX;
-
if (bind(listen_fd, (struct sockaddr *)&addr, sizeof(addr)) < 0) {
DEBUGLOG("Can't bind local socket: %s\n", strerror(errno));
goto error;