aboutsummaryrefslogtreecommitdiffstats
path: root/net/ipv6/ip6mr.c
diff options
context:
space:
mode:
authorJoe Perches <joe@perches.com>2012-11-25 13:26:34 -0500
committerDavid S. Miller <davem@davemloft.net>2012-11-26 17:35:58 -0500
commit03f52a0a554210d5049eeed9f1bb29047dc807cb (patch)
tree8bbbc7f22f5a124f340676281ce0901c179e412f /net/ipv6/ip6mr.c
parentc91f6df2db4972d3cc983e6988b9abf1ad02f5f9 (diff)
ip6mr: Add sizeof verification to MRT6_ASSERT and MT6_PIM
Verify the length of the user-space arguments. Signed-off-by: Joe Perches <joe@perches.com> Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'net/ipv6/ip6mr.c')
-rw-r--r--net/ipv6/ip6mr.c6
1 files changed, 6 insertions, 0 deletions
diff --git a/net/ipv6/ip6mr.c b/net/ipv6/ip6mr.c
index 79bb49061ef6..926ea544f499 100644
--- a/net/ipv6/ip6mr.c
+++ b/net/ipv6/ip6mr.c
@@ -1646,6 +1646,9 @@ int ip6_mroute_setsockopt(struct sock *sk, int optname, char __user *optval, uns
1646 case MRT6_ASSERT: 1646 case MRT6_ASSERT:
1647 { 1647 {
1648 int v; 1648 int v;
1649
1650 if (optlen != sizeof(v))
1651 return -EINVAL;
1649 if (get_user(v, (int __user *)optval)) 1652 if (get_user(v, (int __user *)optval))
1650 return -EFAULT; 1653 return -EFAULT;
1651 mrt->mroute_do_assert = v; 1654 mrt->mroute_do_assert = v;
@@ -1656,6 +1659,9 @@ int ip6_mroute_setsockopt(struct sock *sk, int optname, char __user *optval, uns
1656 case MRT6_PIM: 1659 case MRT6_PIM:
1657 { 1660 {
1658 int v; 1661 int v;
1662
1663 if (optlen != sizeof(v))
1664 return -EINVAL;
1659 if (get_user(v, (int __user *)optval)) 1665 if (get_user(v, (int __user *)optval))
1660 return -EFAULT; 1666 return -EFAULT;
1661 v = !!v; 1667 v = !!v;