From nobody Tue Jul 28 09:34:20 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 4h8VfP1jtyz6mRkF for ; Tue, 28 Jul 2026 09:34:21 +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 "YR1" (not verified)) by mx1.freebsd.org (Postfix) with ESMTPS id 4h8VfN4YJcz3Vy3 for ; Tue, 28 Jul 2026 09:34:20 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1785231260; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=b/vBVBIw9HzO83pJUIgZH+vZc75KOCyVA2hDkMh/4GU=; b=CZ53kgLc1tanRzwm2CvPGPkkLXVlRrNzLHHG9qThPloB4wcIh6Q/J3lgM21zVg/FVs46SI g9oB1FPHYxzyHS+A+XcF/PApvtC6trESD9mNv+nOIDGVbuK6B9FkKlRlZyKhzQh16ktxuF k+YzHkb7MyWSdAIk9KmqRdZ4kyMNo8fc9wx85tQcDS2ivm/SeVcYb4pYJyWOU0lwEjr2ah mpI1C8vGEaETZ4CiyBs5H8eVqPADXCnwr1oO4GQmzi22wetD7uEIfGIEDXIoDMsCrq6vR7 iRdUQUExJrKk82CddPuleL1wcf6nh2fHfmRebJ/EcMOGxZSKm9EV2EGfeIJktw== ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1785231260; a=rsa-sha256; cv=none; b=uz5jNfVZ3HITL2hYklJQjWaDtY3OMEe/eK95u9o8UGKPAKLz0C3hz84PikEDqxPQ8dnLGZ cyjznUzl/AQhJfmS0F2ui/4PuV5GdX+jwHaZ/airCq9z06Jdl/LKJiHpo+18PDwraQ45R1 sbXzES8Tg1/1mhtozDKJd0b5NM49FwNuK7R7x0x5MmdQ9sRYf8IG0WNBKTN2gG00wJUePr H5Ie9BclNqlyhRpJ3Sedmwjp4R7qNIO8ztgT1vOZYglFJyth6pSMl/uDGh51YPP70SVhLB oFJ3gn/H+66+6YGVlhFenA4k/hOOdkvleXVd3aiC9G0+sgZsHbITXlbFQ8tl0w== 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=1785231260; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=b/vBVBIw9HzO83pJUIgZH+vZc75KOCyVA2hDkMh/4GU=; b=HgZDEAafvuJzsbkJZcOBBIZsmXlV0i1dUVG+bNebod+W5hSUb97fLO9M9I8nUiPQv1MUEG OaHWCj9ni0orQBhJsYXWPSYXb6gqV31M2Iyq/eFOSxoJb2NnKsAkF+41RgZzBZFMWSyxVG qmUfkrc3tYsAkzI52bbA/iX8F+gfmpRmdN30yqywj1SUKfbpxJFyAPaEbJPq/201TpFsSs mTuK62KQeA7JICc0qXKAo2O+Wc6kEixL/kA83J59i7tNiPbCfILbVAdRk//OvkjeF0N+Zs kXDgMLv9ZuT0rO8vPkK9/ezf0iGIbO0GA8NM9WYkpZ7YeR3YUwqdcpdUr5blJA== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) by mxrelay.nyi.freebsd.org (Postfix) with ESMTP id 4h8VfN3Bw1zb7Z for ; Tue, 28 Jul 2026 09:34:20 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from git (uid 1279) (envelope-from git@FreeBSD.org) id 1c67b by gitrepo.freebsd.org (DragonFly Mail Agent v0.13+ on gitrepo.freebsd.org); Tue, 28 Jul 2026 09:34:20 +0000 To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org Cc: Aleksandr Rybalko From: Dag-Erling=?utf-8?Q? Sm=C3=B8rg?=rav Subject: git: 25e66327126d - stable/14 - install: add -z option 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: 25e66327126deb92f95fc2d65c8c7d51c4862e2b Auto-Submitted: auto-generated Date: Tue, 28 Jul 2026 09:34:20 +0000 Message-Id: <6a68779c.1c67b.36fd6c7f@gitrepo.freebsd.org> The branch stable/14 has been updated by des: URL: https://cgit.FreeBSD.org/src/commit/?id=25e66327126deb92f95fc2d65c8c7d51c4862e2b commit 25e66327126deb92f95fc2d65c8c7d51c4862e2b Author: Aleksandr Rybalko AuthorDate: 2026-05-25 07:53:20 +0000 Commit: Dag-Erling Smørgrav CommitDate: 2026-07-28 09:31:15 +0000 install: add -z option Introduces the -z flag, enabling users to set a custom file size limit for pre-installation change checks and avoiding future hard-coded limit modifications. Reviewed by: glebius Approved by: glebius (mentor) Obtained from: Fudo Security MFC after: 2 weeks Sponsored by: Fudo Security Differential Revision: https://reviews.freebsd.org/D57230 (cherry picked from commit 97cad013a50a4012328e11424ed2350c1efc036c) --- usr.bin/xinstall/Makefile | 2 +- usr.bin/xinstall/install.1 | 13 +++++++++++-- usr.bin/xinstall/xinstall.c | 18 ++++++++++++++---- 3 files changed, 26 insertions(+), 7 deletions(-) diff --git a/usr.bin/xinstall/Makefile b/usr.bin/xinstall/Makefile index 9e91b8b210a0..588a2baca5c4 100644 --- a/usr.bin/xinstall/Makefile +++ b/usr.bin/xinstall/Makefile @@ -13,7 +13,7 @@ MAN= install.1 CFLAGS+= -I${SRCTOP}/contrib/mtree CFLAGS+= -I${SRCTOP}/lib/libnetbsd -LIBADD= md +LIBADD= md util CFLAGS+= -DWITH_MD5 -DWITH_RIPEMD160 .ifdef BOOTSTRAPPING diff --git a/usr.bin/xinstall/install.1 b/usr.bin/xinstall/install.1 index 193892c4a2b9..7c7b6f1b2651 100644 --- a/usr.bin/xinstall/install.1 +++ b/usr.bin/xinstall/install.1 @@ -35,7 +35,7 @@ .Nd install binaries .Sh SYNOPSIS .Nm -.Op Fl bCcpSsUv +.Op Fl bCcpSsUvz .Op Fl B Ar suffix .Op Fl D Ar destdir .Op Fl f Ar flags @@ -47,9 +47,10 @@ .Op Fl N Ar dbdir .Op Fl o Ar owner .Op Fl T Ar tags +.Op Fl z Ar size .Ar file1 file2 .Nm -.Op Fl bCcpSsUv +.Op Fl bCcpSsUvz .Op Fl B Ar suffix .Op Fl D Ar destdir .Op Fl f Ar flags @@ -61,6 +62,7 @@ .Op Fl N Ar dbdir .Op Fl o Ar owner .Op Fl T Ar tags +.Op Fl z Ar size .Ar file1 ... fileN directory .Nm .Fl d @@ -266,6 +268,13 @@ Cause .Nm to be verbose, showing files as they are installed or backed up. +.It Fl z Ar maxsize +Limit the comparison feature of +.Fl C +to files no larger than +.Ar maxsize . +Files exceeding this limit bypass the comparison step and are directly overwritten. +The default maximum size is 128MiB. .El .Pp By default, diff --git a/usr.bin/xinstall/xinstall.c b/usr.bin/xinstall/xinstall.c index d9e48ddada03..7bb9ad15fc45 100644 --- a/usr.bin/xinstall/xinstall.c +++ b/usr.bin/xinstall/xinstall.c @@ -70,6 +70,7 @@ static char sccsid[] = "@(#)xinstall.c 8.1 (Berkeley) 7/21/93"; #include #include #include +#include #include #include "mtree.h" @@ -150,6 +151,7 @@ static FILE *metafp; static const char *group, *owner; static const char *suffix = BACKUP_SUFFIX; static char *destdir, *digest, *fflags, *metafile, *tags; +static size_t max_compare_size = MAX_CMP_SIZE; static int compare(int, const char *, size_t, int, const char *, size_t, char **); @@ -181,12 +183,13 @@ main(int argc, char *argv[]) u_int iflags; char *p; const char *to_name; + uint64_t num; fset = 0; iflags = 0; set = NULL; group = owner = NULL; - while ((ch = getopt(argc, argv, "B:bCcD:df:g:h:l:M:m:N:o:pSsT:Uv")) != + while ((ch = getopt(argc, argv, "B:bCcD:df:g:h:l:M:m:N:o:pSsT:Uvz:")) != -1) switch((char)ch) { case 'B': @@ -283,6 +286,13 @@ main(int argc, char *argv[]) case 'v': verbose = 1; break; + case 'z': + if (expand_number(optarg, &num) != 0 || num == 0) { + errx(EX_USAGE, "invalid max compare filesize:" + " %s", optarg); + } + max_compare_size = num; + break; case '?': default: usage(); @@ -1105,7 +1115,7 @@ compare(int from_fd, const char *from_name __unused, size_t from_len, do_digest = (digesttype != DIGEST_NONE && dresp != NULL && *dresp == NULL); - if (from_len <= MAX_CMP_SIZE) { + if (from_len <= max_compare_size) { static char *buf, *buf1, *buf2; static size_t bufsize; int n1, n2; @@ -1497,11 +1507,11 @@ usage(void) { (void)fprintf(stderr, "usage: install [-bCcpSsUv] [-f flags] [-g group] [-m mode] [-o owner]\n" -" [-M log] [-D dest] [-h hash] [-T tags]\n" +" [-M log] [-D dest] [-h hash] [-T tags] [-z maxcmpsize]\n" " [-B suffix] [-l linkflags] [-N dbdir]\n" " file1 file2\n" " install [-bCcpSsUv] [-f flags] [-g group] [-m mode] [-o owner]\n" -" [-M log] [-D dest] [-h hash] [-T tags]\n" +" [-M log] [-D dest] [-h hash] [-T tags] [-z maxcmpsize]\n" " [-B suffix] [-l linkflags] [-N dbdir]\n" " file1 ... fileN directory\n" " install -dU [-vU] [-g group] [-m mode] [-N dbdir] [-o owner]\n"