Message ID | 20090102085943.GA25100@gondor.apana.org.au |
---|---|
State | Superseded, archived |
Delegated to: | David Miller |
Headers | show |
diff --git a/net/ipv6/ipv6_sockglue.c b/net/ipv6/ipv6_sockglue.c index eeeaad2..0df4b10 100644 --- a/net/ipv6/ipv6_sockglue.c +++ b/net/ipv6/ipv6_sockglue.c @@ -399,15 +399,13 @@ sticky_done: { struct in6_pktinfo pkt; - if (optlen == 0) - goto e_inval; - else if (optlen < sizeof(struct in6_pktinfo) || optval == NULL) + if (optlen < sizeof(pkt)) goto e_inval; - if (copy_from_user(&pkt, optval, optlen)) { - retv = -EFAULT; - break; - } + retv = -EFAULT; + if (copy_from_user(&pkt, optval, sizeof(pkt))) + break; + if (sk->sk_bound_dev_if && pkt.ipi6_ifindex != sk->sk_bound_dev_if) goto e_inval;