[IPV6]: Fix the data length of get destination options with short length
If get destination options with length which is not enough for that option,getsockopt() will still return the real length of the option, which is larger then the buffer space. This is because ipv6_getsockopt_sticky() returns the real length of the option. This patch fix this problem. Signed-off-by: Yang Hongyang <yanghy@cn.fujitsu.com> Signed-off-by: YOSHIFUJI Hideaki <yoshfuji@linux-ipv6.org>
This commit is contained in:
parent
05335c2220
commit
95b496b666
1 changed files with 1 additions and 1 deletions
|
@ -832,7 +832,7 @@ static int ipv6_getsockopt_sticky(struct sock *sk, struct ipv6_txoptions *opt,
|
||||||
len = min_t(unsigned int, len, ipv6_optlen(hdr));
|
len = min_t(unsigned int, len, ipv6_optlen(hdr));
|
||||||
if (copy_to_user(optval, hdr, len))
|
if (copy_to_user(optval, hdr, len))
|
||||||
return -EFAULT;
|
return -EFAULT;
|
||||||
return ipv6_optlen(hdr);
|
return len;
|
||||||
}
|
}
|
||||||
|
|
||||||
static int do_ipv6_getsockopt(struct sock *sk, int level, int optname,
|
static int do_ipv6_getsockopt(struct sock *sk, int level, int optname,
|
||||||
|
|
Loading…
Reference in a new issue