diff options
author | Amerigo Wang <amwang@redhat.com> | 2013-05-09 21:56:37 +0000 |
---|---|---|
committer | David S. Miller <davem@davemloft.net> | 2013-05-11 17:40:14 -0700 |
commit | 5dbd5068430b8bd1c19387d46d6c1a88b261257f (patch) | |
tree | efdc2ea5315d01fa10b2a7404e1562af9ab4dd57 /net | |
parent | d34710e3e30fee26f4b0617b5458aa1c48236bb0 (diff) | |
download | op-kernel-dev-5dbd5068430b8bd1c19387d46d6c1a88b261257f.zip op-kernel-dev-5dbd5068430b8bd1c19387d46d6c1a88b261257f.tar.gz |
ipv6,gre: do not leak info to user-space
There is a hole in struct ip6_tnl_parm2, so we have to
zero the struct on stack before copying it to user-space.
Cc: David S. Miller <davem@davemloft.net>
Signed-off-by: Cong Wang <amwang@redhat.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'net')
-rw-r--r-- | net/ipv6/ip6_gre.c | 2 |
1 files changed, 2 insertions, 0 deletions
diff --git a/net/ipv6/ip6_gre.c b/net/ipv6/ip6_gre.c index d3ddd84..ecd6073 100644 --- a/net/ipv6/ip6_gre.c +++ b/net/ipv6/ip6_gre.c @@ -1081,6 +1081,7 @@ static int ip6gre_tunnel_ioctl(struct net_device *dev, } if (t == NULL) t = netdev_priv(dev); + memset(&p, 0, sizeof(p)); ip6gre_tnl_parm_to_user(&p, &t->parms); if (copy_to_user(ifr->ifr_ifru.ifru_data, &p, sizeof(p))) err = -EFAULT; @@ -1128,6 +1129,7 @@ static int ip6gre_tunnel_ioctl(struct net_device *dev, if (t) { err = 0; + memset(&p, 0, sizeof(p)); ip6gre_tnl_parm_to_user(&p, &t->parms); if (copy_to_user(ifr->ifr_ifru.ifru_data, &p, sizeof(p))) err = -EFAULT; |