From: Florian Weimer Date: Thu, 17 May 2018 11:54:45 +0000 (+0200) Subject: resolv: Fully initialize struct mmsghdr in send_dg [BZ #23037] X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=7e7a5f0bcd28c6fc5285474f05080ac6ed5e55b9;p=thirdparty%2Fglibc.git resolv: Fully initialize struct mmsghdr in send_dg [BZ #23037] (cherry picked from commit 583a27d525ae189bdfaa6784021b92a9a1dae12e) --- diff --git a/ChangeLog b/ChangeLog index 60755b91633..8c1ff9d4b26 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,9 @@ +2018-04-09 Florian Weimer + + [BZ #23037] + * resolv/res_send.c (send_dg): Use designated initializers instead + of assignment to zero-initialize other fields of struct mmsghdr. + 2018-01-18 Arjun Shankar [BZ #22343] diff --git a/NEWS b/NEWS index 410f0d16314..8c432b3e6eb 100644 --- a/NEWS +++ b/NEWS @@ -118,6 +118,7 @@ The following bugs are resolved with this release: [22685] powerpc: Fix syscalls during early process initialization [22715] x86-64: Properly align La_x86_64_retval to VEC_SIZE [22774] malloc: Integer overflow in malloc (CVE-2018-6551) + [23037] resolv: Fully initialize struct mmsghdr in send_dg Version 2.26 diff --git a/resolv/res_send.c b/resolv/res_send.c index b396aae03c9..0ca02f98430 100644 --- a/resolv/res_send.c +++ b/resolv/res_send.c @@ -1152,25 +1152,27 @@ send_dg(res_state statp, if (have_sendmmsg >= 0 && nwritten == 0 && buf2 != NULL && !single_request) { - struct iovec iov[2]; - struct mmsghdr reqs[2]; - reqs[0].msg_hdr.msg_name = NULL; - reqs[0].msg_hdr.msg_namelen = 0; - reqs[0].msg_hdr.msg_iov = &iov[0]; - reqs[0].msg_hdr.msg_iovlen = 1; - iov[0].iov_base = (void *) buf; - iov[0].iov_len = buflen; - reqs[0].msg_hdr.msg_control = NULL; - reqs[0].msg_hdr.msg_controllen = 0; - - reqs[1].msg_hdr.msg_name = NULL; - reqs[1].msg_hdr.msg_namelen = 0; - reqs[1].msg_hdr.msg_iov = &iov[1]; - reqs[1].msg_hdr.msg_iovlen = 1; - iov[1].iov_base = (void *) buf2; - iov[1].iov_len = buflen2; - reqs[1].msg_hdr.msg_control = NULL; - reqs[1].msg_hdr.msg_controllen = 0; + struct iovec iov = + { .iov_base = (void *) buf, .iov_len = buflen }; + struct iovec iov2 = + { .iov_base = (void *) buf2, .iov_len = buflen2 }; + struct mmsghdr reqs[2] = + { + { + .msg_hdr = + { + .msg_iov = &iov, + .msg_iovlen = 1, + }, + }, + { + .msg_hdr = + { + .msg_iov = &iov2, + .msg_iovlen = 1, + } + }, + }; int ndg = __sendmmsg (pfd[0].fd, reqs, 2, MSG_NOSIGNAL); if (__glibc_likely (ndg == 2))