X-Git-Url: http://drtracing.org/?a=blobdiff_plain;f=net%2Fipv6%2Fip6mr.c;h=926ea544f499e93c895b42e9677d316f7cff481d;hb=03f52a0a554210d5049eeed9f1bb29047dc807cb;hp=79bb49061ef6ddb5398c3213ddb2da14f49b5fc7;hpb=c91f6df2db4972d3cc983e6988b9abf1ad02f5f9;p=deliverable%2Flinux.git 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 case MRT6_ASSERT: { int v; + + if (optlen != sizeof(v)) + return -EINVAL; if (get_user(v, (int __user *)optval)) return -EFAULT; mrt->mroute_do_assert = v; @@ -1656,6 +1659,9 @@ int ip6_mroute_setsockopt(struct sock *sk, int optname, char __user *optval, uns case MRT6_PIM: { int v; + + if (optlen != sizeof(v)) + return -EINVAL; if (get_user(v, (int __user *)optval)) return -EFAULT; v = !!v;