diff options
Diffstat (limited to 'net/sctp/socket.c')
| -rw-r--r-- | net/sctp/socket.c | 5 | 
1 files changed, 3 insertions, 2 deletions
diff --git a/net/sctp/socket.c b/net/sctp/socket.c index 06b42b7f5a0..92ba71dfe08 100644 --- a/net/sctp/socket.c +++ b/net/sctp/socket.c @@ -4133,9 +4133,10 @@ static int sctp_getsockopt_disable_fragments(struct sock *sk, int len,  static int sctp_getsockopt_events(struct sock *sk, int len, char __user *optval,  				  int __user *optlen)  { -	if (len < sizeof(struct sctp_event_subscribe)) +	if (len <= 0)  		return -EINVAL; -	len = sizeof(struct sctp_event_subscribe); +	if (len > sizeof(struct sctp_event_subscribe)) +		len = sizeof(struct sctp_event_subscribe);  	if (put_user(len, optlen))  		return -EFAULT;  	if (copy_to_user(optval, &sctp_sk(sk)->subscribe, len))  |