From 87313fd05d185a256a72f8b16cdc6bc87b1daa55 Mon Sep 17 00:00:00 2001 From: Richard Cochran Date: Sun, 25 Nov 2012 17:45:37 +0100 Subject: [PATCH] Initialize the socket address structure to zero. It is safer and more correct to clear the addresses before use. The IPv6 fields flowinfo and scope_id in particular should not be set to random values from the stack. Signed-off-by: Richard Cochran --- udp.c | 2 ++ udp6.c | 2 ++ 2 files changed, 4 insertions(+) diff --git a/udp.c b/udp.c index d0aab6f..ea92794 100644 --- a/udp.c +++ b/udp.c @@ -87,6 +87,7 @@ static int open_socket(char *name, struct in_addr mc_addr[2], short port) struct sockaddr_in addr; int fd, index, on = 1; + memset(&addr, 0, sizeof(addr)); addr.sin_family = AF_INET; addr.sin_addr.s_addr = htonl(INADDR_ANY); addr.sin_port = htons(port); @@ -184,6 +185,7 @@ static int udp_send(struct transport *t, struct fdarray *fda, int event, int pee struct sockaddr_in addr; unsigned char junk[1600]; + memset(&addr, 0, sizeof(addr)); addr.sin_family = AF_INET; addr.sin_addr = peer ? mcast_addr[MC_PDELAY] : mcast_addr[MC_PRIMARY]; addr.sin_port = htons(event ? EVENT_PORT : GENERAL_PORT); diff --git a/udp6.c b/udp6.c index e6023a6..30a3410 100644 --- a/udp6.c +++ b/udp6.c @@ -86,6 +86,7 @@ static int open_socket_ipv6(char *name, struct in6_addr mc_addr[2], short port) struct sockaddr_in6 addr; int fd, index, on = 1; + memset(&addr, 0, sizeof(addr)); addr.sin6_family = AF_INET6; addr.sin6_addr = in6addr_any; addr.sin6_port = htons(port); @@ -183,6 +184,7 @@ static int udp6_send(struct transport *t, struct fdarray *fda, int event, int pe struct sockaddr_in6 addr; unsigned char junk[1600]; + memset(&addr, 0, sizeof(addr)); addr.sin6_family = AF_INET6; addr.sin6_addr = peer ? mc6_addr[MC_PDELAY] : mc6_addr[MC_PRIMARY]; addr.sin6_port = htons(event ? EVENT_PORT : GENERAL_PORT);