diff options
Diffstat (limited to 'daemons/clvmd/clvmd-singlenode.c')
-rw-r--r-- | daemons/clvmd/clvmd-singlenode.c | 14 |
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; |