Zero-initialize struct msghdr
authorMathieu Desnoyers <mathieu.desnoyers@efficios.com>
Tue, 7 Feb 2012 03:59:36 +0000 (22:59 -0500)
committerMathieu Desnoyers <mathieu.desnoyers@efficios.com>
Tue, 7 Feb 2012 03:59:36 +0000 (22:59 -0500)
==27395== Syscall param socketcall.sendmsg(msg.msg_iov[i]) points to uninitialised byte(s)
==27395==    at 0x546C6A0: __sendmsg_nocancel (syscall-template.S:82)
==27395==    by 0x4E30880: lttcomm_send_creds_unix_sock (sessiond-comm.c:449)
==27395==    by 0x4E2F584: ask_sessiond (lttng-ctl.c:99)
==27395==    by 0x4E2FC85: lttng_list_tracepoints (lttng-ctl.c:667)
==27395==    by 0x4039C1: cmd_list (list.c:314)
==27395==    by 0x40217C: main (lttng.c:266)

Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
src/common/sessiond-comm/sessiond-comm.c

index 24757f702a2557de7a556afcab4d079e4763ed7f..2b5c226c1c421ea5576dfdc6b6b96a8fb3c9824d 100644 (file)
@@ -250,10 +250,12 @@ int lttcomm_listen_unix_sock(int sock)
  */
 ssize_t lttcomm_recv_unix_sock(int sock, void *buf, size_t len)
 {
-       struct msghdr msg = { 0 };
+       struct msghdr msg;
        struct iovec iov[1];
        ssize_t ret = -1;
 
+       memset(&msg, 0, sizeof(msg));
+
        iov[0].iov_base = buf;
        iov[0].iov_len = len;
        msg.msg_iov = iov;
@@ -274,10 +276,12 @@ ssize_t lttcomm_recv_unix_sock(int sock, void *buf, size_t len)
  */
 ssize_t lttcomm_send_unix_sock(int sock, void *buf, size_t len)
 {
-       struct msghdr msg = { 0 };
+       struct msghdr msg;
        struct iovec iov[1];
        ssize_t ret = -1;
 
+       memset(&msg, 0, sizeof(msg));
+
        iov[0].iov_base = buf;
        iov[0].iov_len = len;
        msg.msg_iov = iov;
@@ -314,7 +318,7 @@ int lttcomm_close_unix_sock(int sock)
  */
 ssize_t lttcomm_send_fds_unix_sock(int sock, int *fds, size_t nb_fd)
 {
-       struct msghdr msg = { 0 };
+       struct msghdr msg;
        struct cmsghdr *cmptr;
        struct iovec iov[1];
        ssize_t ret = -1;
@@ -322,6 +326,8 @@ ssize_t lttcomm_send_fds_unix_sock(int sock, int *fds, size_t nb_fd)
        char tmp[CMSG_SPACE(sizeof_fds)];
        char dummy = 0;
 
+       memset(&msg, 0, sizeof(msg));
+
        if (nb_fd > LTTCOMM_MAX_SEND_FDS)
                return -EINVAL;
 
@@ -363,9 +369,11 @@ ssize_t lttcomm_recv_fds_unix_sock(int sock, int *fds, size_t nb_fd)
        struct cmsghdr *cmsg;
        size_t sizeof_fds = nb_fd * sizeof(int);
        char recv_fd[CMSG_SPACE(sizeof_fds)];
-       struct msghdr msg = { 0 };
+       struct msghdr msg;
        char dummy;
 
+       memset(&msg, 0, sizeof(msg));
+
        /* Prepare to receive the structures */
        iov[0].iov_base = &dummy;
        iov[0].iov_len = 1;
@@ -419,7 +427,7 @@ end:
  */
 ssize_t lttcomm_send_creds_unix_sock(int sock, void *buf, size_t len)
 {
-       struct msghdr msg = { 0 };
+       struct msghdr msg;
        struct cmsghdr *cmptr;
        struct iovec iov[1];
        ssize_t ret = -1;
@@ -427,6 +435,8 @@ ssize_t lttcomm_send_creds_unix_sock(int sock, void *buf, size_t len)
        size_t sizeof_cred = sizeof(struct ucred);
        char anc_buf[CMSG_SPACE(sizeof_cred)];
 
+       memset(&msg, 0, sizeof(msg));
+
        iov[0].iov_base = buf;
        iov[0].iov_len = len;
        msg.msg_iov = iov;
@@ -462,13 +472,15 @@ ssize_t lttcomm_send_creds_unix_sock(int sock, void *buf, size_t len)
 ssize_t lttcomm_recv_creds_unix_sock(int sock, void *buf, size_t len,
                struct ucred *creds)
 {
-       struct msghdr msg = { 0 };
+       struct msghdr msg;
        struct cmsghdr *cmptr;
        struct iovec iov[1];
        ssize_t ret;
        size_t sizeof_cred = sizeof(struct ucred);
        char anc_buf[CMSG_SPACE(sizeof_cred)];
 
+       memset(&msg, 0, sizeof(msg));
+
        /* Not allowed */
        if (creds == NULL) {
                ret = -1;
This page took 0.027975 seconds and 5 git commands to generate.