diff options
Diffstat (limited to 'net/ipv4/af_inet.c')
| -rw-r--r-- | net/ipv4/af_inet.c | 6 | 
1 files changed, 6 insertions, 0 deletions
diff --git a/net/ipv4/af_inet.c b/net/ipv4/af_inet.c index 33b7dffa773..f7135742238 100644 --- a/net/ipv4/af_inet.c +++ b/net/ipv4/af_inet.c @@ -86,6 +86,7 @@  #include <linux/poll.h>  #include <linux/netfilter_ipv4.h>  #include <linux/random.h> +#include <linux/slab.h>  #include <asm/uaccess.h>  #include <asm/system.h> @@ -530,6 +531,8 @@ int inet_dgram_connect(struct socket *sock, struct sockaddr * uaddr,  {  	struct sock *sk = sock->sk; +	if (addr_len < sizeof(uaddr->sa_family)) +		return -EINVAL;  	if (uaddr->sa_family == AF_UNSPEC)  		return sk->sk_prot->disconnect(sk, flags); @@ -573,6 +576,9 @@ int inet_stream_connect(struct socket *sock, struct sockaddr *uaddr,  	int err;  	long timeo; +	if (addr_len < sizeof(uaddr->sa_family)) +		return -EINVAL; +  	lock_sock(sk);  	if (uaddr->sa_family == AF_UNSPEC) {  |