* sysdeps/unix/sysv/linux/ifaddrs.c (__netlink_sendreq): Make sure
authorUlrich Drepper <drepper@redhat.com>
Fri, 19 May 2006 07:55:24 +0000 (07:55 +0000)
committerUlrich Drepper <drepper@redhat.com>
Fri, 19 May 2006 07:55:24 +0000 (07:55 +0000)
no uninitialized memory is passed to sendto.

ChangeLog
sysdeps/unix/sysv/linux/ifaddrs.c

index 23110ba..cab8422 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,8 @@
+2006-05-19  Ulrich Drepper  <drepper@redhat.com>
+
+       * sysdeps/unix/sysv/linux/ifaddrs.c (__netlink_sendreq): Make sure
+       no uninitialized memory is passed to sendto.
+
 2006-05-18  Ulrich Drepper  <drepper@redhat.com>
 
        * nis/nis_callback.c (__nis_create_callback): Use asprinf instead
index e6720f0..82495de 100644 (file)
@@ -89,10 +89,11 @@ __netlink_free_handle (struct netlink_handle *h)
 static int
 __netlink_sendreq (struct netlink_handle *h, int type)
 {
-  struct
+  struct req
   {
     struct nlmsghdr nlh;
     struct rtgenmsg g;
+    char pad[0];
   } req;
   struct sockaddr_nl nladdr;
 
@@ -105,6 +106,8 @@ __netlink_sendreq (struct netlink_handle *h, int type)
   req.nlh.nlmsg_pid = 0;
   req.nlh.nlmsg_seq = h->seq;
   req.g.rtgen_family = AF_UNSPEC;
+  if (sizeof (req) != offsetof (struct req, pad))
+    memset (req.pad, '\0', sizeof (req) - offsetof (struct req, pad));
 
   memset (&nladdr, '\0', sizeof (nladdr));
   nladdr.nl_family = AF_NETLINK;