From nobody Wed May 27 09:03:41 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 4gQNvf0RGrz6fhVX for ; Wed, 27 May 2026 09:03:42 +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 4gQNvd40Fgz3XBm for ; Wed, 27 May 2026 09:03:41 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1779872621; 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=hrQBzC2rjCUfRvzma+QopVO8fpBcekHqnWAWrcbHkhQ=; b=vMwXel7y3RmOTUKObO40JwY565KI86SlgfnZWSXEaU0HIyEWLKF0vUDnkDKRueIm9Hv46t MX/ewY0kQ5LJ029S/4grBWnlZfRluTqJ+b63heGwRO8TRAuB4nd4tzA/kKrrZJnpdn9HAB AwmtDScA8eqUzdDzblsX4e2qnVdwJy+B6TxL6KWwpiTMahrShEAGwxe7Z6G0uw7GiVh0Yn ES0ozJ2ZC8v7zJsuIguf8H7Nxy6WOBNoFMdF0Lh3YzB+0hqZGsB4gFdwTfRm6XRPZ5v/rR Sz5tPBL1PXoCpAQ6SRrr5a6Nqf3kftJjyS8OG+GtF1/sACrdMOcIcaSw1V01+w== ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1779872621; a=rsa-sha256; cv=none; b=gerZ80W+hewQxS8FR1MpJEV1HbbLJDJR7IyOquFhcbdfAXCEaCu8IBl+/K+EhoxcBkuykM jiv5HmlqYA5D4+WhCq5l8XZeYDrSmEVSPf009UcPwSIMwMMfcwdLN+mTK5zZ+WGK+gSU8Q 0F0J/MhfX8DAdKPvrDaHJL6bH5uCL3A05lxbhAsA3h9sgKnIk/D3vdKm7q1ZZdHOKHXe7V UTOe4pE4dPzC9CJdLECq2TSdhIM0PBKHuByjfrrS+w5sqW4mVme9dA2oeoLUt5x6uIZbLy kBzCzEkZ1b7pbBaHotjrNm+vjcgthCcy/hFys0RMfmyNNV4yEWt/pg1WpWOVZQ== 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=1779872621; 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=hrQBzC2rjCUfRvzma+QopVO8fpBcekHqnWAWrcbHkhQ=; b=IkwQ5OjIAatyhLW2cZz8IDyVjSi3HefKhxopbNlb+S6MezwC8S2Xv3tIiv385AM/UZv4QV 9kO53M2BwVOwiooXkbhUNCHkaHehmFGZhGgoy6qMWz9gHC8L9cWlJA5g7m0KqaFQBRrtuS 8CUwiY2P6GIsUQ4o6M02MC3yweGdBTw2T6FHHNjo83VoSLsrcbHPtgeS8fh2SadNFPU4tt 6Q+syPedzU+Fr5vHPBTcC767///NNDAd/SA8TVUzNadrH0mA0/oIlS9mRWMwFY/x2hvH93 Cgc5w9FJBO+q6pbdgvhlmCjr1IxkTrw6I9SHLaygdR6JMnu1P9EACUxzTekhZg== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) by mxrelay.nyi.freebsd.org (Postfix) with ESMTP id 4gQNvd3PnxzstM for ; Wed, 27 May 2026 09:03:41 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from git (uid 1279) (envelope-from git@FreeBSD.org) id 25bdc by gitrepo.freebsd.org (DragonFly Mail Agent v0.13+ on gitrepo.freebsd.org); Wed, 27 May 2026 09:03:41 +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: 2d0b4eef72ef - stable/14 - tftp: Simplify URI handling 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: 2d0b4eef72ef8180a51108c279a81462fcfa289d Auto-Submitted: auto-generated Date: Wed, 27 May 2026 09:03:41 +0000 Message-Id: <6a16b36d.25bdc.6cb41ff9@gitrepo.freebsd.org> The branch stable/14 has been updated by des: URL: https://cgit.FreeBSD.org/src/commit/?id=2d0b4eef72ef8180a51108c279a81462fcfa289d commit 2d0b4eef72ef8180a51108c279a81462fcfa289d Author: Dag-Erling Smørgrav AuthorDate: 2026-05-22 17:57:08 +0000 Commit: Dag-Erling Smørgrav CommitDate: 2026-05-27 09:03:29 +0000 tftp: Simplify URI handling * No need to copy our argument into a new buffer; it is writeable and will not be reused after we return. * Instead of constructing the string "get path" and then splitting it into an argument vector, just construct the vector directly. This avoid potentially overrunning the buffer. * Call settftpmode() just once, with either the default mode or the user-provided value we already validated. * Use errx() instead of fprintf(stderr) + exit(). Reported by: Moyao, Minghao Fu MFC after: 1 week Reviewed by: markj Differential Revision: https://reviews.freebsd.org/D57070 (cherry picked from commit a4b17594181502cea38ab0d8b2a9a10782286334) --- usr.bin/tftp/main.c | 32 ++++++++++++-------------------- 1 file changed, 12 insertions(+), 20 deletions(-) diff --git a/usr.bin/tftp/main.c b/usr.bin/tftp/main.c index 15ca7e03eb70..32eee2fb9afd 100644 --- a/usr.bin/tftp/main.c +++ b/usr.bin/tftp/main.c @@ -238,23 +238,18 @@ main(int argc, char *argv[]) static void urihandling(char *URI) { - char uri[ARG_MAX]; + char meth[] = "get"; char *host = NULL; char *path = NULL; char *opts = NULL; const char *tmode = "octet"; char *s; - char line[MAXLINE]; int i; - strlcpy(uri, URI, ARG_MAX); - host = uri + 7; + host = URI + 7; - if ((s = strchr(host, '/')) == NULL) { - fprintf(stderr, - "Invalid URI: Couldn't find / after hostname\n"); - exit(1); - } + if ((s = strchr(host, '/')) == NULL) + errx(1, "Invalid URI: Couldn't find / after hostname"); *s = '\0'; path = s + 1; @@ -266,24 +261,21 @@ urihandling(char *URI) tmode = opts; tmode += 5; - for (i = 0; modes[i].m_name != NULL; i++) { + for (i = 0; modes[i].m_name != NULL; i++) if (strcmp(modes[i].m_name, tmode) == 0) break; - } - if (modes[i].m_name == NULL) { - fprintf(stderr, "Invalid mode: '%s'\n", mode); - exit(1); - } - settftpmode(modes[i].m_mode); + if (modes[i].m_name == NULL) + errx(1, "Invalid mode: '%s'", mode); } - } else { - settftpmode("octet"); } + settftpmode(tmode); setpeer0(host, NULL); - sprintf(line, "get %s", path); - makeargv(line); + margc = 0; + margv[margc++] = meth; + margv[margc++] = path; + margv[margc] = NULL; get(margc, margv); }