diff options
-rw-r--r-- | net/sctp/socket.c | 5 |
1 files changed, 4 insertions, 1 deletions
diff --git a/net/sctp/socket.c b/net/sctp/socket.c index fb02c7033307..9fbb6feb8c27 100644 --- a/net/sctp/socket.c +++ b/net/sctp/socket.c | |||
@@ -4687,7 +4687,7 @@ static int sctp_getsockopt_disable_fragments(struct sock *sk, int len, | |||
4687 | static int sctp_getsockopt_events(struct sock *sk, int len, char __user *optval, | 4687 | static int sctp_getsockopt_events(struct sock *sk, int len, char __user *optval, |
4688 | int __user *optlen) | 4688 | int __user *optlen) |
4689 | { | 4689 | { |
4690 | if (len <= 0) | 4690 | if (len == 0) |
4691 | return -EINVAL; | 4691 | return -EINVAL; |
4692 | if (len > sizeof(struct sctp_event_subscribe)) | 4692 | if (len > sizeof(struct sctp_event_subscribe)) |
4693 | len = sizeof(struct sctp_event_subscribe); | 4693 | len = sizeof(struct sctp_event_subscribe); |
@@ -6430,6 +6430,9 @@ static int sctp_getsockopt(struct sock *sk, int level, int optname, | |||
6430 | if (get_user(len, optlen)) | 6430 | if (get_user(len, optlen)) |
6431 | return -EFAULT; | 6431 | return -EFAULT; |
6432 | 6432 | ||
6433 | if (len < 0) | ||
6434 | return -EINVAL; | ||
6435 | |||
6433 | lock_sock(sk); | 6436 | lock_sock(sk); |
6434 | 6437 | ||
6435 | switch (optname) { | 6438 | switch (optname) { |