]> git.ipfire.org Git - thirdparty/glibc.git/commitdiff
resolv: Fully initialize struct mmsghdr in send_dg [BZ #23037]
authorFlorian Weimer <fweimer@redhat.com>
Thu, 17 May 2018 11:54:45 +0000 (13:54 +0200)
committerFlorian Weimer <fweimer@redhat.com>
Thu, 17 May 2018 11:54:45 +0000 (13:54 +0200)
(cherry picked from commit 583a27d525ae189bdfaa6784021b92a9a1dae12e)

ChangeLog
NEWS
resolv/res_send.c

index 60755b916333537c78fbf991f1e0c17ba4b91c8c..8c1ff9d4b268b769ed83f047e4c1b3ecd2504731 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,9 @@
+2018-04-09  Florian Weimer  <fweimer@redhat.com>
+
+       [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  <arjun@redhat.com>
 
        [BZ #22343]
diff --git a/NEWS b/NEWS
index 410f0d163145c1549fb73fdd96568f585b5bf62f..8c432b3e6eb69cd0965f1ed0db8a6c73255e3db7 100644 (file)
--- 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
 \f
 Version 2.26
 
index b396aae03c9eeb6e2ada366bd0eeea61353b76b3..0ca02f98430500e5610b0a34cdccae95925e7629 100644 (file)
@@ -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))