From 6f3cd63551db013e3cf5dfcebc41115322d5cfe9 Mon Sep 17 00:00:00 2001 From: Zdenek Kabelac Date: Thu, 21 Jun 2012 21:19:28 +0200 Subject: cleanup: replace memset with struct initilization Simplifies the code, properly detects too long socket paths, drops unused parameter. --- daemons/clvmd/clvmd-openais.c | 3 +-- daemons/clvmd/clvmd-singlenode.c | 14 ++++++++------ daemons/clvmd/clvmd.c | 25 +++++++++++++++---------- daemons/clvmd/refresh_clvmd.c | 12 ++++++------ daemons/cmirrord/cluster.c | 3 +-- daemons/cmirrord/functions.c | 8 ++------ daemons/dmeventd/dmeventd.c | 12 +++--------- 7 files changed, 36 insertions(+), 41 deletions(-) (limited to 'daemons') diff --git a/daemons/clvmd/clvmd-openais.c b/daemons/clvmd/clvmd-openais.c index 5f237e9b..9ce73d6a 100644 --- a/daemons/clvmd/clvmd-openais.c +++ b/daemons/clvmd/clvmd-openais.c @@ -197,14 +197,13 @@ static int add_internal_client(int fd, fd_callback_t callback) DEBUGLOG("Add_internal_client, fd = %d\n", fd); - client = malloc(sizeof(struct local_client)); + client = calloc(1, sizeof(struct local_client)); if (!client) { DEBUGLOG("malloc failed\n"); return -1; } - memset(client, 0, sizeof(struct local_client)); client->fd = fd; client->type = CLUSTER_INTERNAL; client->callback = callback; 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; diff --git a/daemons/clvmd/clvmd.c b/daemons/clvmd/clvmd.c index 0b866e6b..4efa2373 100644 --- a/daemons/clvmd/clvmd.c +++ b/daemons/clvmd/clvmd.c @@ -2092,20 +2092,23 @@ static int add_to_lvmqueue(struct local_client *client, struct clvm_header *msg, static int check_local_clvmd(void) { int local_socket; - struct sockaddr_un sockaddr; int ret = 0; + struct sockaddr_un sockaddr = { .sun_family = AF_UNIX }; + + if (!dm_strncpy(sockaddr.sun_path, CLVMD_SOCKNAME, sizeof(sockaddr.sun_path))) { + log_error("%s: clvmd socket name too long.", CLVMD_SOCKNAME); + return -1; + } /* Open local socket */ if ((local_socket = socket(PF_UNIX, SOCK_STREAM, 0)) < 0) { + log_sys_error("socket", "local socket"); return -1; } - memset(&sockaddr, 0, sizeof(sockaddr)); - memcpy(sockaddr.sun_path, CLVMD_SOCKNAME, sizeof(CLVMD_SOCKNAME)); - sockaddr.sun_family = AF_UNIX; - if (connect(local_socket,(struct sockaddr *) &sockaddr, sizeof(sockaddr))) { + log_sys_error("connect", "local socket"); ret = -1; } @@ -2127,9 +2130,14 @@ static void close_local_sock(int local_socket) /* Open the local socket, that's the one we talk to libclvm down */ static int open_local_sock(void) { - int local_socket = -1; - struct sockaddr_un sockaddr; mode_t old_mask; + int local_socket = -1; + struct sockaddr_un sockaddr = { .sun_family = AF_UNIX }; + + if (!dm_strncpy(sockaddr.sun_path, CLVMD_SOCKNAME, sizeof(sockaddr.sun_path))) { + log_error("%s: clvmd socket name too long.", CLVMD_SOCKNAME); + return -1; + } close_local_sock(local_socket); @@ -2148,9 +2156,6 @@ static int open_local_sock(void) DEBUGLOG("setting CLOEXEC on local_socket failed: %s\n", strerror(errno)); fcntl(local_socket, F_SETFL, fcntl(local_socket, F_GETFL, 0) | O_NONBLOCK); - memset(&sockaddr, 0, sizeof(sockaddr)); - memcpy(sockaddr.sun_path, CLVMD_SOCKNAME, sizeof(CLVMD_SOCKNAME)); - sockaddr.sun_family = AF_UNIX; if (bind(local_socket, (struct sockaddr *) &sockaddr, sizeof(sockaddr))) { log_error("can't bind local socket: %m"); diff --git a/daemons/clvmd/refresh_clvmd.c b/daemons/clvmd/refresh_clvmd.c index 9ce02f2f..28b5625f 100644 --- a/daemons/clvmd/refresh_clvmd.c +++ b/daemons/clvmd/refresh_clvmd.c @@ -47,7 +47,12 @@ static int _clvmd_sock = -1; static int _open_local_sock(void) { int local_socket; - struct sockaddr_un sockaddr; + struct sockaddr_un sockaddr = { .sun_family = AF_UNIX }; + + if (!dm_strncpy(sockaddr.sun_path, CLVMD_SOCKNAME, sizeof(sockaddr.sun_path))) { + fprintf(stderr, "%s: clvmd socket name too long.", CLVMD_SOCKNAME); + return -1; + } /* Open local socket */ if ((local_socket = socket(PF_UNIX, SOCK_STREAM, 0)) < 0) { @@ -55,11 +60,6 @@ static int _open_local_sock(void) return -1; } - memset(&sockaddr, 0, sizeof(sockaddr)); - memcpy(sockaddr.sun_path, CLVMD_SOCKNAME, sizeof(CLVMD_SOCKNAME)); - - sockaddr.sun_family = AF_UNIX; - if (connect(local_socket,(struct sockaddr *) &sockaddr, sizeof(sockaddr))) { int saved_errno = errno; diff --git a/daemons/cmirrord/cluster.c b/daemons/cmirrord/cluster.c index 9fbf8007..70c76c3a 100644 --- a/daemons/cmirrord/cluster.c +++ b/daemons/cmirrord/cluster.c @@ -1249,7 +1249,7 @@ static void cpg_join_callback(struct clog_cpg *match, uint32_t my_pid = (uint32_t)getpid(); uint32_t lowest = match->lowest_id; struct clog_request *rq; - char dbuf[32]; + char dbuf[32] = { 0 }; /* Assign my_cluster_id */ if ((my_cluster_id == 0xDEAD) && (joined->pid == my_pid)) @@ -1265,7 +1265,6 @@ static void cpg_join_callback(struct clog_cpg *match, if (joined->nodeid == my_cluster_id) goto out; - memset(dbuf, 0, sizeof(dbuf)); for (i = 0; i < member_list_entries - 1; i++) sprintf(dbuf+strlen(dbuf), "%u-", member_list[i].nodeid); sprintf(dbuf+strlen(dbuf), "(%u)", joined->nodeid); diff --git a/daemons/cmirrord/functions.c b/daemons/cmirrord/functions.c index 3e8fd202..f6e09180 100644 --- a/daemons/cmirrord/functions.c +++ b/daemons/cmirrord/functions.c @@ -235,11 +235,9 @@ static int rw_log(struct log_c *lc, int do_write) */ static int read_log(struct log_c *lc) { - struct log_header lh; + struct log_header lh = { 0 }; size_t bitset_size; - memset(&lh, 0, sizeof(struct log_header)); - if (rw_log(lc, 0)) return -EIO; /* Failed disk read */ @@ -1724,14 +1722,12 @@ int do_request(struct clog_request *rq, int server) static void print_bits(dm_bitset_t bs, int print) { int i, size; - char outbuf[128]; + char outbuf[128] = { 0 }; unsigned char *buf = (unsigned char *)(bs + 1); size = (*bs % 8) ? 1 : 0; size += (*bs / 8); - memset(outbuf, 0, sizeof(outbuf)); - for (i = 0; i < size; i++) { if (!(i % 16)) { if (outbuf[0] != '\0') { diff --git a/daemons/dmeventd/dmeventd.c b/daemons/dmeventd/dmeventd.c index 91ef690b..2ffe7f4d 100644 --- a/daemons/dmeventd/dmeventd.c +++ b/daemons/dmeventd/dmeventd.c @@ -1437,11 +1437,9 @@ static int _do_process_request(struct dm_event_daemon_message *msg) { int ret; char *answer; - static struct message_data message_data; + struct message_data message_data = { .msg = msg }; /* Parse the message. */ - memset(&message_data, 0, sizeof(message_data)); - message_data.msg = msg; if (msg->cmd == DM_EVENT_CMD_HELLO || msg->cmd == DM_EVENT_CMD_DIE) { ret = 0; answer = msg->data; @@ -1473,9 +1471,7 @@ static int _do_process_request(struct dm_event_daemon_message *msg) static void _process_request(struct dm_event_fifos *fifos) { int die = 0; - struct dm_event_daemon_message msg; - - memset(&msg, 0, sizeof(msg)); + struct dm_event_daemon_message msg = { 0 }; /* * Read the request from the client (client_read, client_write @@ -1580,10 +1576,8 @@ static void _sig_alarm(int signum __attribute__((unused))) static void _init_thread_signals(void) { sigset_t my_sigset; - struct sigaction act; + struct sigaction act = { .sa_handler = _sig_alarm }; - memset(&act, 0, sizeof(act)); - act.sa_handler = _sig_alarm; sigaction(SIGALRM, &act, NULL); sigfillset(&my_sigset); -- cgit