From b74a8c7f5f3f76db2ecb46cc421faec2d234a6bc Mon Sep 17 00:00:00 2001 From: Ulrich Drepper Date: Sat, 6 May 2006 22:07:31 +0000 Subject: , * sysdeps/unix/sysv/linux/check_pf.c (make_request): Make sure that unused memory passed to sendto is nevertheless initialized. --- sysdeps/unix/sysv/linux/check_pf.c | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) (limited to 'sysdeps') diff --git a/sysdeps/unix/sysv/linux/check_pf.c b/sysdeps/unix/sysv/linux/check_pf.c index f186182cf6..7fbb7543d6 100644 --- a/sysdeps/unix/sysv/linux/check_pf.c +++ b/sysdeps/unix/sysv/linux/check_pf.c @@ -17,9 +17,11 @@ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. */ +#include #include #include #include +#include #include #include #include @@ -42,10 +44,14 @@ static int make_request (int fd, pid_t pid, bool *seen_ipv4, bool *seen_ipv6, struct in6addrinfo **in6ai, size_t *in6ailen) { - struct + struct req { struct nlmsghdr nlh; struct rtgenmsg g; + /* struct rtgenmsg consists of a single byte. This means there + are three bytes of padding included in the REQ definition. + We make them explicit here. */ + char pad[3]; } req; struct sockaddr_nl nladdr; @@ -56,6 +62,9 @@ make_request (int fd, pid_t pid, bool *seen_ipv4, bool *seen_ipv6, req.nlh.nlmsg_seq = time (NULL); req.g.rtgen_family = AF_UNSPEC; + assert (sizeof (req) - offsetof (struct req, pad) == 3); + memset (req.pad, '\0', sizeof (req.pad)); + memset (&nladdr, '\0', sizeof (nladdr)); nladdr.nl_family = AF_NETLINK; -- cgit v1.2.3