From nobody Fri Dec 10 10:30:10 2021 X-Original-To: dev-commits-src-all@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 36B3918D49AE; Fri, 10 Dec 2021 10:30:11 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "R3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4J9RxG6ksbz4v4N; Fri, 10 Dec 2021 10:30:10 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id C8D6B18E8E; Fri, 10 Dec 2021 10:30:10 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.16.1/8.16.1) with ESMTP id 1BAAUASA095971; Fri, 10 Dec 2021 10:30:10 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.16.1/8.16.1/Submit) id 1BAAUAin095968; Fri, 10 Dec 2021 10:30:10 GMT (envelope-from git) Date: Fri, 10 Dec 2021 10:30:10 GMT Message-Id: <202112101030.1BAAUAin095968@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Michael Tuexen Subject: git: 70d91ea04cd5 - stable/13 - sctp: improve handling of assoc ids in socket options List-Id: Commit messages for all branches of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-all List-Help: List-Post: List-Subscribe: List-Unsubscribe: Sender: owner-dev-commits-src-all@freebsd.org X-BeenThere: dev-commits-src-all@freebsd.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: tuexen X-Git-Repository: src X-Git-Refname: refs/heads/stable/13 X-Git-Reftype: branch X-Git-Commit: 70d91ea04cd5569ffd279e1f7088fe2bb3dbd390 Auto-Submitted: auto-generated ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1639132211; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=4sY7WYtAmeUzhHZSZosNkGl43qEpyiU8pSrvVqBdyHo=; b=wv3oOXeBI7eDcmfqxBnDtucvBOzXBfJ5Zxe9azsuhAZsfKegfZOJ0I70QQMWkL/hCrajh3 DCWIvV00DiMZm5vJAAqlOW+fG3z5v0XfyvcFPD7aCrHecmrCFvZT5ci54lJovDZjuzA4w1 sWogynk0SoDurtuJiRe5PSrCSfgLECla76SLOZ/qNzXS3gDLfehxWfW/0AOlbX0F9w3Rnu 8lxBYr4LWpiEnZjpheHCMT+k7fehdkg8cOtFf+wKcCrbIgB5y7k32fFI2ZPioqeeZl4eG8 RR8mxTUZQzyXM80g84L/LsrVOtxSAljEdT2/69ur81zatkKdbvHVENLKRHzQHw== ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1639132211; a=rsa-sha256; cv=none; b=LMhF2Qe0PwOrmKDOEKim2gSsGAjGCkpMTgmLebb83bTXKDEFRwZA4UATce/PfG3snILdka lnh2kiLg43/99jgLZiO75GCJhuH6ToYteZS4OCZxZtDHvHybk88W5+E6wwDoIYUPjoIu9K WhS5ZN5I/7tRMnCjwUt/KDO0bVwbQwL3KkDeoU0RNk3YshKNJgiLQZZcnbidEDX4GqOrSN 2zW/P+x1fCtSJO3NAe+Hz7GxHBrnD7mHyme+CvYBkmfOoVHHUpotVGn1opdrBR5RflAb9e Q620bC+Mc/Sp0yINRYWJ39DWwa+hNnA8PmM4p86suxNy43UU0b9zQSQvHWCiIA== ARC-Authentication-Results: i=1; mx1.freebsd.org; none X-ThisMailContainsUnwantedMimeParts: N The branch stable/13 has been updated by tuexen: URL: https://cgit.FreeBSD.org/src/commit/?id=70d91ea04cd5569ffd279e1f7088fe2bb3dbd390 commit 70d91ea04cd5569ffd279e1f7088fe2bb3dbd390 Author: Michael Tuexen AuthorDate: 2021-12-01 13:54:55 +0000 Commit: Michael Tuexen CommitDate: 2021-12-10 10:29:43 +0000 sctp: improve handling of assoc ids in socket options For socket options related to local and remote addresses providing generic association ids does not make sense. Report EINVAL in this case. MFC after: 1 week (cherry picked from commit 13c196a41e2604e6f9a4484b997279b82173dc40) --- sys/netinet/sctp_usrreq.c | 30 +++++++++++++++++++++++------- 1 file changed, 23 insertions(+), 7 deletions(-) diff --git a/sys/netinet/sctp_usrreq.c b/sys/netinet/sctp_usrreq.c index 2bc3cb457522..2dad0b41a304 100644 --- a/sys/netinet/sctp_usrreq.c +++ b/sys/netinet/sctp_usrreq.c @@ -2192,8 +2192,13 @@ flags_out: *value = (uint32_t)size; *optsize = sizeof(uint32_t); } else { - SCTP_LTRACE_ERR_RET(inp, NULL, NULL, SCTP_FROM_SCTP_USRREQ, ENOTCONN); - error = ENOTCONN; + if ((inp->sctp_flags & SCTP_PCB_FLAGS_UDPTYPE) && + ((sctp_assoc_t)*value <= SCTP_ALL_ASSOC)) { + error = EINVAL; + } else { + error = ENOENT; + } + SCTP_LTRACE_ERR_RET(inp, NULL, NULL, SCTP_FROM_SCTP_USRREQ, error); } break; } @@ -2267,8 +2272,13 @@ flags_out: } SCTP_TCB_UNLOCK(stcb); } else { - SCTP_LTRACE_ERR_RET(inp, NULL, NULL, SCTP_FROM_SCTP_USRREQ, ENOENT); - error = ENOENT; + if ((inp->sctp_flags & SCTP_PCB_FLAGS_UDPTYPE) && + (saddr->sget_assoc_id <= SCTP_ALL_ASSOC)) { + error = EINVAL; + } else { + error = ENOENT; + } + SCTP_LTRACE_ERR_RET(inp, NULL, NULL, SCTP_FROM_SCTP_USRREQ, error); } break; } @@ -2280,12 +2290,18 @@ flags_out: SCTP_CHECK_AND_CAST(saddr, optval, struct sctp_getaddresses, *optsize); SCTP_FIND_STCB(inp, stcb, saddr->sget_assoc_id); - limit = *optsize - offsetof(struct sctp_getaddresses, addr); - actual = sctp_fill_up_addresses(inp, stcb, limit, &saddr->addr[0].sa); + if ((inp->sctp_flags & SCTP_PCB_FLAGS_UDPTYPE) && + ((saddr->sget_assoc_id == SCTP_CURRENT_ASSOC) || + (saddr->sget_assoc_id == SCTP_ALL_ASSOC))) { + error = EINVAL; + } else { + limit = *optsize - offsetof(struct sctp_getaddresses, addr); + actual = sctp_fill_up_addresses(inp, stcb, limit, &saddr->addr[0].sa); + *optsize = offsetof(struct sctp_getaddresses, addr) + actual; + } if (stcb != NULL) { SCTP_TCB_UNLOCK(stcb); } - *optsize = offsetof(struct sctp_getaddresses, addr) + actual; break; } case SCTP_PEER_ADDR_PARAMS: