From nobody Fri Jul 25 20:12:04 2025 X-Original-To: dev-commits-src-main@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 4bpfD45JVtz62HfB; Fri, 25 Jul 2025 20:12:04 +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 "R10" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4bpfD41Q1rz3GNK; Fri, 25 Jul 2025 20:12:04 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1753474324; 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=fkl4+L8+s3gpMmOIYhWBBByCi359GA3k6QOnWZ9V01U=; b=dFUPlfB78uXEgVeiAFuvqCd6TOn1vGaLRomcTFs28XFJ9VuNuCQ/BBayeQg8BtqF4LyupV JI1X7W0/sRJbWgyR65rUvIRwgGxxWBuBuXpSHUTzOqfTbQWm1BN2B/WhkI24aypZ1ROvWx 8Tqa50cozm4TnIyPvYEkuIavmjY3uZToSvHk/XBwK9Gva6h9bnxu/Tsx7Fqaq16+K+wGcw 8ZH0Wpcua8OTi8MWH8dpAcOUwWY2Q3S9v0fniOZaXSrIo19oEr8JmCax4PNKC26MdKQRRS 6k+KVxVgIWQ5yEr94KwD95+fxef2zFJaGpz0u3MfNnoF/icRqMfEQGWCho3kkg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1753474324; 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=fkl4+L8+s3gpMmOIYhWBBByCi359GA3k6QOnWZ9V01U=; b=XaRNyDaHR1R64jXEfbcFUi8dowbAOv79GZoW+zPDNwaE/SWg8OPv/IAqrmFpV8WcMrQfEN XDVaXCpUwxVmrbbkHRy4u9HCQ66qhrlnYxV8D72n0CnVtO0xa8zEP0qnX1dJ5buGczKnYD iPDYlZqjORFdP0NDewhP0U3k15gFxXGV+4KYGIwp7zBHAF1+Obz5RD2rTdpLRx9EowE4fQ yCJ8dY3DHV2cIuMRxQxu7yQmquAmpKFKIZyOpnSDWlsEXIFNlpQlWi0NYtaY+q/9U5kHXL zMTkCPgZEjBhvgkAQfTC8qntxLuLzPL8loXiioOaYz1p97sDLUwHrLi/yRdM4w== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1753474324; a=rsa-sha256; cv=none; b=OP+A35iM3GE/JLFFQ4ZdMEeXn7E+fJXAylI2HCnp36JDp51SJ7VDcpRQzp4INBgWxOmd72 pZIZaQ4btT47ANhqxN9QUkIimzxlB1T6C0qYisqM/4S9kCM2Zul9IJQsUp4xFxSGkfb7Pc urXIpPXinZXUM6x0WysEEqkxo4AksPa8lu6a2OAP9OBfOotpBN1c+8847roIsZcoICelVJ TbLU6IDjDGhjxFoZPVke9f7/fNyiFwMFVM9zKPHvXSPCld1T+wWDBy1udALryLdy8NWJdX 9hN74xUzztLRgxTA4G10qXlmtBd4tyf4jZBajutcyc9ZQwjJLPcnCWW1pK58MA== 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 4bpfD40wsdzymy; Fri, 25 Jul 2025 20:12:04 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.18.1/8.18.1) with ESMTP id 56PKC4vX010196; Fri, 25 Jul 2025 20:12:04 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.18.1/8.18.1/Submit) id 56PKC40I010191; Fri, 25 Jul 2025 20:12:04 GMT (envelope-from git) Date: Fri, 25 Jul 2025 20:12:04 GMT Message-Id: <202507252012.56PKC40I010191@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org From: Gleb Smirnoff Subject: git: b9fa99600a78 - main - bsnmpd: fix unix/stream socket operation List-Id: Commit messages for the main branch of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-main List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-main@freebsd.org Sender: owner-dev-commits-src-main@FreeBSD.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: glebius X-Git-Repository: src X-Git-Refname: refs/heads/main X-Git-Reftype: branch X-Git-Commit: b9fa99600a78c66dce9040595f04bfe2ba25652c Auto-Submitted: auto-generated The branch main has been updated by glebius: URL: https://cgit.FreeBSD.org/src/commit/?id=b9fa99600a78c66dce9040595f04bfe2ba25652c commit b9fa99600a78c66dce9040595f04bfe2ba25652c Author: Gleb Smirnoff AuthorDate: 2025-07-25 20:09:59 +0000 Commit: Gleb Smirnoff CommitDate: 2025-07-25 20:09:59 +0000 bsnmpd: fix unix/stream socket operation With new send method, that gives us directly port_input pointer, we know the correct file descriptor right away, no matter are we in SOCK_DGRAM or in SOCK_STREAM mode. Previously, the function tried to search for the socket, and that was totally wrong. With several simultaneous connections this end up with sending a reply to incorrect socket. Reviewed by: harti Differential Revision: https://reviews.freebsd.org/D51361 --- contrib/bsnmp/snmpd/trans_lsock.c | 23 ++--------------------- 1 file changed, 2 insertions(+), 21 deletions(-) diff --git a/contrib/bsnmp/snmpd/trans_lsock.c b/contrib/bsnmp/snmpd/trans_lsock.c index 4a850d434d7c..01beb01927ec 100644 --- a/contrib/bsnmp/snmpd/trans_lsock.c +++ b/contrib/bsnmp/snmpd/trans_lsock.c @@ -395,29 +395,10 @@ lsock_init_port(struct tport *tp) * Send something */ static ssize_t -lsock_send(struct tport *tp, const u_char *buf, size_t len, +lsock_send(struct tport *tp __unused, const u_char *buf, size_t len, struct port_input *pi) { - struct lsock_port *p = __containerof(tp, struct lsock_port, tport); - struct lsock_peer *peer; - - if (p->type == LOCP_DGRAM_PRIV || p->type == LOCP_DGRAM_UNPRIV) { - peer = LIST_FIRST(&p->peers); - - } else { - /* search for the peer */ - LIST_FOREACH(peer, &p->peers, link) - if (peer->input.peerlen == pi->peerlen && - memcmp(peer->input.peer, pi->peer, pi->peerlen) == 0) - break; - if (peer == NULL) { - errno = ENOTCONN; - return (-1); - } - } - - return (sendto(peer->input.fd, buf, len, MSG_NOSIGNAL, pi->peer, - pi->peerlen)); + return (sendto(pi->fd, buf, len, MSG_NOSIGNAL, pi->peer, pi->peerlen)); } static void