summaryrefslogtreecommitdiffstats
path: root/net/ipv6/ipv6_sockglue.c
diff options
context:
space:
mode:
authorYang Hongyang <yanghy@cn.fujitsu.com>2008-08-03 18:16:15 -0700
committerDavid S. Miller <davem@davemloft.net>2008-08-03 18:16:15 -0700
commitcfb266c0ee0ea0b7bfa8189e3a3a80344dec6112 (patch)
tree89989c670a92740f511486dd60e5aa14397d44b1 /net/ipv6/ipv6_sockglue.c
parent1730554f253deb65fe5112c54b2f898d5318a328 (diff)
downloadlinux-cfb266c0ee0ea0b7bfa8189e3a3a80344dec6112.tar.gz
linux-cfb266c0ee0ea0b7bfa8189e3a3a80344dec6112.tar.bz2
linux-cfb266c0ee0ea0b7bfa8189e3a3a80344dec6112.zip
ipv6: Fix the return value of Set Hop-by-Hop options header with NULL data pointer
When Set Hop-by-Hop options header with NULL data pointer and optlen is not zero use setsockopt(), the kernel successfully return 0 instead of return error EINVAL or EFAULT. This patch fix the problem. Signed-off-by: Yang Hongyang <yanghy@cn.fujitsu.com> Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'net/ipv6/ipv6_sockglue.c')
-rw-r--r--net/ipv6/ipv6_sockglue.c2
1 files changed, 2 insertions, 0 deletions
diff --git a/net/ipv6/ipv6_sockglue.c b/net/ipv6/ipv6_sockglue.c
index ea33b26512c2..741cfcd96f88 100644
--- a/net/ipv6/ipv6_sockglue.c
+++ b/net/ipv6/ipv6_sockglue.c
@@ -346,6 +346,8 @@ static int do_ipv6_setsockopt(struct sock *sk, int level, int optname,
*/
if (optlen == 0)
optval = NULL;
+ else if (optval == NULL)
+ goto e_inval;
else if (optlen < sizeof(struct ipv6_opt_hdr) ||
optlen & 0x7 || optlen > 8 * 255)
goto e_inval;