Commit 73076162 authored by Dan Carpenter's avatar Dan Carpenter Committed by David S. Miller

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: fdb3accc ('tipc: add the ability to get UDP options via netlink')
Signed-off-by: default avatarDan Carpenter <dan.carpenter@oracle.com>
Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
parent 6104e112
...@@ -407,6 +407,7 @@ static int __tipc_nl_add_udp_addr(struct sk_buff *skb, ...@@ -407,6 +407,7 @@ static int __tipc_nl_add_udp_addr(struct sk_buff *skb,
if (ntohs(addr->proto) == ETH_P_IP) { if (ntohs(addr->proto) == ETH_P_IP) {
struct sockaddr_in ip4; struct sockaddr_in ip4;
memset(&ip4, 0, sizeof(ip4));
ip4.sin_family = AF_INET; ip4.sin_family = AF_INET;
ip4.sin_port = addr->port; ip4.sin_port = addr->port;
ip4.sin_addr.s_addr = addr->ipv4.s_addr; 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,6 +418,7 @@ static int __tipc_nl_add_udp_addr(struct sk_buff *skb,
} else if (ntohs(addr->proto) == ETH_P_IPV6) { } else if (ntohs(addr->proto) == ETH_P_IPV6) {
struct sockaddr_in6 ip6; struct sockaddr_in6 ip6;
memset(&ip6, 0, sizeof(ip6));
ip6.sin6_family = AF_INET6; ip6.sin6_family = AF_INET6;
ip6.sin6_port = addr->port; ip6.sin6_port = addr->port;
memcpy(&ip6.sin6_addr, &addr->ipv6, sizeof(struct in6_addr)); memcpy(&ip6.sin6_addr, &addr->ipv6, sizeof(struct in6_addr));
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment