From nobody Wed May 27 09:03:43 2026 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 4gQNvh1t3pz6fhSm for ; Wed, 27 May 2026 09:03:44 +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 "R13" (not verified)) by mx1.freebsd.org (Postfix) with ESMTPS id 4gQNvg5V1gz3X2L for ; Wed, 27 May 2026 09:03:43 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1779872623; 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=hw0KRsdUPazoct/a+8hf8NIhA3KYhgrqlljHOQ85nPg=; b=Oawzj71SFU/25UDyEPyPWs+llKAXMKpgDSONF/DSlzu+a2Waq1x3NQcmjt903Qdwy7Ig9l bDWkNQJDg+pdJ+snUebq1RUPuVUn+A3lkUDvMvyKOASxsrE/mIzJOgOhi/Nqo5+CuxYnn9 R3PQpXxloqeyp88O+2cUBzeMLLy3gGxRRrRWNNX5t0mnZ77w3BAnplpat+Sxu3cSG4kexJ sc2iYMeExY9PV8iSiIRSlFVDAsloH8IqBoT8XTc5yRU6MBKPLVx9lmib1YqHGXngDC7+EH Y1ejQWUmfna+UaQF0mmI6DV2EouGNhVBI6zB1bqMghmRjZ2xy3z2b1b03ar+YA== ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1779872623; a=rsa-sha256; cv=none; b=Q9mAE1ny5drUb7DJ5qD3LQ16G3hN6rmJqfHsdQSEf0zUe+DjtCVGUNdKqcMug7E5v2JEOJ x7j8DF6quuvLw9knvwcFkNA8U2YwVpW9FOZjaL2trL8pgyAot6hWcwN+tfGDkbfo9uycp0 vJNFy1ljHBWiOwuYgPASJqP1Ol8dJ0pifd4lfzRYF4mtOymwnDLlFJbbV8HatKIq7TSFay pAznaqetat6RM9Vl6uwNI0F6bGTAD9ol/BGtT7aBECluAsjkZz8vCtE4NZB1za3uuhrg93 ufiHKmZLIhOuF+y7RzyvzQFZ3XB+vy41Dk8ZjB12+8+7LQNQbdM/chCbAc/iCA== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1779872623; 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=hw0KRsdUPazoct/a+8hf8NIhA3KYhgrqlljHOQ85nPg=; b=PUI7JMgUeCGWqxZFZWxQgB6hrqYhr/UCUH3HdGvmx3ABz5ykZb6vEO1oStWttl7rSwGA7F VC1G+WXkYjStwDFIu1uWZfSBAwEr9Bon5wvSRVqq58CB+7bSDEmAFyIoV4/2R5M1UVeP8Q bUmsgic8Ekmn5aubQRff54AD/z07LKrFtgjmv2OTB0OB7wtf8Rjr/fByRATH7JRZyPtgkq 76QOJeeJYP9zMZQHdG/Kw67X9w+VNyk+efUaroU2lIFDDpVgfCqm7qPHz/pymrtnbLfJxq Eit5zEOYhX697R5bXcIThWOTzKXyxp7l/tCcNDD1SXgp8fPV81Dj7OXUMv0+PQ== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) by mxrelay.nyi.freebsd.org (Postfix) with ESMTP id 4gQNvg4k5SzsZM for ; Wed, 27 May 2026 09:03:43 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from git (uid 1279) (envelope-from git@FreeBSD.org) id 26435 by gitrepo.freebsd.org (DragonFly Mail Agent v0.13+ on gitrepo.freebsd.org); Wed, 27 May 2026 09:03:43 +0000 To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Dag-Erling=?utf-8?Q? Sm=C3=B8rg?=rav Subject: git: 12e8c16e3424 - stable/14 - tftp: Fix handling of port name or number 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: X-BeenThere: dev-commits-src-all@freebsd.org Sender: owner-dev-commits-src-all@FreeBSD.org List-Id: List-Post: List-Help: List-Subscribe: List-Unsubscribe: List-Owner: Precedence: list MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: des X-Git-Repository: src X-Git-Refname: refs/heads/stable/14 X-Git-Reftype: branch X-Git-Commit: 12e8c16e34241ecdafd97b0926e07385b4389aca Auto-Submitted: auto-generated Date: Wed, 27 May 2026 09:03:43 +0000 Message-Id: <6a16b36f.26435.386fbde0@gitrepo.freebsd.org> The branch stable/14 has been updated by des: URL: https://cgit.FreeBSD.org/src/commit/?id=12e8c16e34241ecdafd97b0926e07385b4389aca commit 12e8c16e34241ecdafd97b0926e07385b4389aca Author: Dag-Erling Smørgrav AuthorDate: 2026-05-22 17:57:16 +0000 Commit: Dag-Erling Smørgrav CommitDate: 2026-05-27 09:03:29 +0000 tftp: Fix handling of port name or number MFC after: 1 week Reviewed by: markj Differential Revision: https://reviews.freebsd.org/D57105 (cherry picked from commit 47e4571df15804fe2b010a3c82b22691d80ee680) --- usr.bin/tftp/main.c | 7 ++++--- usr.bin/tftp/tftp.c | 40 ++++++++++++++++++++++------------------ 2 files changed, 26 insertions(+), 21 deletions(-) diff --git a/usr.bin/tftp/main.c b/usr.bin/tftp/main.c index 3db01f53dd78..10343bff412e 100644 --- a/usr.bin/tftp/main.c +++ b/usr.bin/tftp/main.c @@ -344,6 +344,8 @@ setpeer0(char *host, const char *lport) } freeaddrinfo(res0); + free(port); + port = strdup(lport); } static void @@ -363,10 +365,9 @@ setpeer(int argc, char *argv[]) printf("usage: %s [host [port]]\n", argv[0]); return; } - if (argc == 3) { - port = argv[2]; + if (argc == 3) setpeer0(argv[1], argv[2]); - } else + else setpeer0(argv[1], NULL); } diff --git a/usr.bin/tftp/tftp.c b/usr.bin/tftp/tftp.c index 9d727fe8bc2c..d1923864a06d 100644 --- a/usr.bin/tftp/tftp.c +++ b/usr.bin/tftp/tftp.c @@ -70,8 +70,9 @@ int xmitfile(int peer, char *port, int fd, char *name, char *mode) { struct tftphdr *rp; + struct servent *se; int n, i, ret = 0; - uint16_t block; + uint16_t block, portn; struct sockaddr_storage serv; /* valid server port number */ char recvbuffer[MAXPKTSIZE]; struct tftp_stats tftp_stats; @@ -81,14 +82,15 @@ xmitfile(int peer, char *port, int fd, char *name, char *mode) memset(&serv, 0, sizeof(serv)); rp = (struct tftphdr *)recvbuffer; - if (port == NULL) { - struct servent *se; - se = getservbyname("tftp", "udp"); - assert(se != NULL); - ((struct sockaddr_in *)&peer_sock)->sin_port = se->s_port; - } else - ((struct sockaddr_in *)&peer_sock)->sin_port = - htons(atoi(port)); + if ((se = getservbyname(port ? port : "tftp", "udp")) != NULL) + portn = se->s_port; + else + portn = htons(atoi(port)); + if (portn == 0) { + printf("Invalid port '%s'.\n", port ? port : "tftp"); + return -1; + } + ((struct sockaddr_in *)&peer_sock)->sin_port = portn; for (i = 0; i < 12; i++) { struct sockaddr_storage from; @@ -172,7 +174,8 @@ int recvfile(int peer, char *port, int fd, char *name, char *mode) { struct tftphdr *rp; - uint16_t block; + struct servent *se; + uint16_t block, portn; char recvbuffer[MAXPKTSIZE]; int n, i, ret = 0; struct tftp_stats tftp_stats; @@ -181,14 +184,15 @@ recvfile(int peer, char *port, int fd, char *name, char *mode) rp = (struct tftphdr *)recvbuffer; - if (port == NULL) { - struct servent *se; - se = getservbyname("tftp", "udp"); - assert(se != NULL); - ((struct sockaddr_in *)&peer_sock)->sin_port = se->s_port; - } else - ((struct sockaddr_in *)&peer_sock)->sin_port = - htons(atoi(port)); + if ((se = getservbyname(port ? port : "tftp", "udp")) != NULL) + portn = se->s_port; + else + portn = htons(atoi(port)); + if (portn == 0) { + printf("Invalid port '%s'.\n", port ? port : "tftp"); + return (-1); + } + ((struct sockaddr_in *)&peer_sock)->sin_port = portn; for (i = 0; i < 12; i++) { struct sockaddr_storage from;