summaryrefslogtreecommitdiff
path: root/lib/passfd.c
diff options
context:
space:
mode:
authorPavel Hrdina <phrdina@redhat.com>2015-02-24 12:58:46 +0000
committerPádraig Brady <P@draigBrady.com>2015-02-24 13:06:33 +0000
commit8be5f2c10eeb05e52cc4a33cdcd37078742ff5db (patch)
treea4d65b1bf0a3951f8100726540f21dfc82705f9e /lib/passfd.c
parentee3e3ec989ed6e500fd032c526301b632df16996 (diff)
downloadgnulib-8be5f2c10eeb05e52cc4a33cdcd37078742ff5db.tar.gz
passfd: avoid valgrind uninitalised data warning
Running libvirt using valgrind produced: Syscall param sendmsg(msg.msg_control) points to uninitialised byte(s) at ??? (in /lib64/libpthread-2.19.so) by sendfd (passfd.c:86) by virNetSocketSendFD (virnetsocket.c:1766) by virNetServerClientDispatchWrite (virnetserverclient.c:1271) by virNetServerClientDispatchEvent (virnetserverclient.c:1371) by virEventPollDispatchHandles (vireventpoll.c:508) by virEventPollRunOnce (vireventpoll.c:657) by virEventRunDefaultImpl (virevent.c:308) by virNetServerRun (virnetserver.c:1139) by main (libvirtd.c:1491) Address 0xffefff3f4 is on thread 1's stack in frame #1, created by sendfd (passfd.c:51) * lib/passfd.c (sendfd): Reset the msg_controllen of msghdr, to include just the fd we've initialised, rather than including the extra space used for alignment.
Diffstat (limited to 'lib/passfd.c')
-rw-r--r--lib/passfd.c1
1 files changed, 1 insertions, 0 deletions
diff --git a/lib/passfd.c b/lib/passfd.c
index 19587768f2..4d6b813dae 100644
--- a/lib/passfd.c
+++ b/lib/passfd.c
@@ -75,6 +75,7 @@ sendfd (int sock, int fd)
cmsg->cmsg_len = CMSG_LEN (sizeof fd);
/* Initialize the payload: */
memcpy (CMSG_DATA (cmsg), &fd, sizeof fd);
+ msg.msg_controllen = cmsg->cmsg_len;
# elif HAVE_STRUCT_MSGHDR_MSG_ACCRIGHTS
msg.msg_accrights = &fd;
msg.msg_accrightslen = sizeof fd;