From nobody Fri May 22 17:58:05 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 4gMY0Y5qbgz6fLnD for ; Fri, 22 May 2026 17:58:05 +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 4gMY0Y3jJXz4Mqk for ; Fri, 22 May 2026 17:58:05 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1779472685; 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=l1V+wQxBxKB9eLQs/8oHgHOI0DqDknlaMxkh8HvX4jg=; b=lcZTAaAydgDATUXcMEpxSYvb3SZg+Ef1ODGloO0Tmd6+19btwUlNyGm6EP47N6c6OBJMHM 7BDT/g7DHSj912GI5N3q+wW9fkLmyXGvIm5uThL0mjNuK+eJqssjgPeIKSWy+jETdqVjv5 LTkCqd1hYWLZ/okUHO0v7NUEjpE9HUD0SF1Zc8TwV6+hXCNtt/oYeWFcDx9DNx4mEAKnyT gz7yNpXBrr0npGkFNHFaucCYFGBQ93Dv5EYd2IHnwzQaIrMYkAGKFbp+b8gPMQfjqUmLLA 8JvsXNfBW/GUtQu8LjqYgkGRVc7YgAqOJ34juAoxPob4Adb1PqxJmNdcuMXvXA== ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1779472685; a=rsa-sha256; cv=none; b=tsJTCdqystfWDIvqDeMTOhgmrYBCnoGZSo1piMcQ+trz4CsYzO4nEE2zSfN/TTsZqQWxrv 8RzTThGpRt6AaCPdeEkKwFMK8ILWNfb9Uc9n7ZTmEkUn3NkIziypJbxjPDHD1xG45nlaBR 0c0IxRFQkpC6h7FkC1pDaGfleHy2f3ZjuWjHKuZ5zgWIEV9JsODlZbuBMeXu/Z9FaJaH78 JxvyXyJjX3//YMbq/aXeqzCxeCgk5wAv4EmzHQza49hicI3m2TAxuM80vF17721QnhT+83 M+9ChcmEteEKa3xfIrDUPfgxWkpc+vZeCjKH7RNxRC228vqXSW/Wemh4rcLYXw== 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=1779472685; 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=l1V+wQxBxKB9eLQs/8oHgHOI0DqDknlaMxkh8HvX4jg=; b=XBL5RIstqYVGzb/m2ds3dF5a9IadAHkjC5kvekAuKj6ZhgELyeW1w+ACPta+jjzqQm8uAK M2hPDWvihzhTf5mIEcjZvtUYqc1NsHN0JeDtVnKTzSp2CnapXTf77sFn5BhYq29yK13AwI RKTtrGFUMz7OZJRG8yeod0Fe2DhGg6RgRzvMwANJzlDTYQVbOh7CLEkN986QzVAoKBvTOZ WnRsokGi39qsuu3IEAE0v05hILcwGJaXcAkwJxfx+vR0lWQpFSnkot0f6X1bGL3nF94bKq efBKfq0SFDbfRRS4+fXrp2Yz7KSSU8RgwZP8H4eTn2SWxqPXO0dRRpKyMyMevA== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) by mxrelay.nyi.freebsd.org (Postfix) with ESMTP id 4gMY0Y2wwNzX26 for ; Fri, 22 May 2026 17:58:05 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from git (uid 1279) (envelope-from git@FreeBSD.org) id 3a385 by gitrepo.freebsd.org (DragonFly Mail Agent v0.13+ on gitrepo.freebsd.org); Fri, 22 May 2026 17:58:05 +0000 To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org From: Dag-Erling=?utf-8?Q? Sm=C3=B8rg?=rav Subject: git: a4b175941815 - main - 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/main X-Git-Reftype: branch X-Git-Commit: a4b17594181502cea38ab0d8b2a9a10782286334 Auto-Submitted: auto-generated Date: Fri, 22 May 2026 17:58:05 +0000 Message-Id: <6a10992d.3a385.1bfa7822@gitrepo.freebsd.org> The branch main has been updated by des: URL: https://cgit.FreeBSD.org/src/commit/?id=a4b17594181502cea38ab0d8b2a9a10782286334 commit a4b17594181502cea38ab0d8b2a9a10782286334 Author: Dag-Erling Smørgrav AuthorDate: 2026-05-22 17:57:08 +0000 Commit: Dag-Erling Smørgrav CommitDate: 2026-05-22 17:57:08 +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 --- 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 8e36c9e04f9b..9b7ea7155d82 100644 --- a/usr.bin/tftp/main.c +++ b/usr.bin/tftp/main.c @@ -225,23 +225,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; @@ -253,24 +248,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); }