diff options
Diffstat (limited to 'net/sctp/socket.c')
| -rw-r--r-- | net/sctp/socket.c | 4 | 
1 files changed, 3 insertions, 1 deletions
diff --git a/net/sctp/socket.c b/net/sctp/socket.c index e7e3baf7009..0dbcde6758e 100644 --- a/net/sctp/socket.c +++ b/net/sctp/socket.c @@ -4401,7 +4401,9 @@ static int sctp_getsockopt_local_addrs_old(struct sock *sk, int len,  	if (copy_from_user(&getaddrs, optval, len))  		return -EFAULT; -	if (getaddrs.addr_num <= 0) return -EINVAL; +	if (getaddrs.addr_num <= 0 || +	    getaddrs.addr_num >= (INT_MAX / sizeof(union sctp_addr))) +		return -EINVAL;  	/*  	 *  For UDP-style sockets, id specifies the association to query.  	 *  If the id field is set to the value '0' then the locally bound  |