diff --git a/net/sctp/socket.c b/net/sctp/socket.c index 78e88ddb1e4bd689e93b57688b9a7446356e6e8a..159696e02591858af42619facb7a1de29937b7b7 100644 --- a/net/sctp/socket.c +++ b/net/sctp/socket.c @@ -4529,7 +4529,8 @@ static int sctp_connect(struct sock *sk, struct sockaddr *addr, } /* Validate addr_len before calling common connect/connectx routine. */ - af = sctp_get_af_specific(addr->sa_family); + af = addr_len < offsetofend(struct sockaddr, sa_family) ? NULL : + sctp_get_af_specific(addr->sa_family); if (!af || addr_len < af->sockaddr_len) { err = -EINVAL; } else {