aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDan Carpenter <dan.carpenter@oracle.com>2016-10-13 04:06:06 -0400
committerDavid S. Miller <davem@davemloft.net>2016-10-13 12:10:01 -0400
commit7307616245babb12c923151d8ef69af02e46c255 (patch)
tree29f946b13c80eaf048850bc920a185587aa4c9d3
parent6104e112f4a613506ba1ea9d4b974279f888006b (diff)
tipc: info leak in __tipc_nl_add_udp_addr()
We should clear out the padding and unused struct members so that we don't expose stack information to userspace. Fixes: fdb3accc2c15 ('tipc: add the ability to get UDP options via netlink') Signed-off-by: Dan Carpenter <dan.carpenter@oracle.com> Signed-off-by: David S. Miller <davem@davemloft.net>
-rw-r--r--net/tipc/udp_media.c2
1 files changed, 2 insertions, 0 deletions
diff --git a/net/tipc/udp_media.c b/net/tipc/udp_media.c
index d80cd3f7503f..78cab9c5a445 100644
--- a/net/tipc/udp_media.c
+++ b/net/tipc/udp_media.c
@@ -407,6 +407,7 @@ static int __tipc_nl_add_udp_addr(struct sk_buff *skb,
407 if (ntohs(addr->proto) == ETH_P_IP) { 407 if (ntohs(addr->proto) == ETH_P_IP) {
408 struct sockaddr_in ip4; 408 struct sockaddr_in ip4;
409 409
410 memset(&ip4, 0, sizeof(ip4));
410 ip4.sin_family = AF_INET; 411 ip4.sin_family = AF_INET;
411 ip4.sin_port = addr->port; 412 ip4.sin_port = addr->port;
412 ip4.sin_addr.s_addr = addr->ipv4.s_addr; 413 ip4.sin_addr.s_addr = addr->ipv4.s_addr;
@@ -417,6 +418,7 @@ static int __tipc_nl_add_udp_addr(struct sk_buff *skb,
417 } else if (ntohs(addr->proto) == ETH_P_IPV6) { 418 } else if (ntohs(addr->proto) == ETH_P_IPV6) {
418 struct sockaddr_in6 ip6; 419 struct sockaddr_in6 ip6;
419 420
421 memset(&ip6, 0, sizeof(ip6));
420 ip6.sin6_family = AF_INET6; 422 ip6.sin6_family = AF_INET6;
421 ip6.sin6_port = addr->port; 423 ip6.sin6_port = addr->port;
422 memcpy(&ip6.sin6_addr, &addr->ipv6, sizeof(struct in6_addr)); 424 memcpy(&ip6.sin6_addr, &addr->ipv6, sizeof(struct in6_addr));