diff options
author | Joe Perches <joe@perches.com> | 2012-11-25 13:26:34 -0500 |
---|---|---|
committer | David S. Miller <davem@davemloft.net> | 2012-11-26 17:35:58 -0500 |
commit | 03f52a0a554210d5049eeed9f1bb29047dc807cb (patch) | |
tree | 8bbbc7f22f5a124f340676281ce0901c179e412f /net/ipv6/ip6mr.c | |
parent | c91f6df2db4972d3cc983e6988b9abf1ad02f5f9 (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.c | 6 |
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; |