From nobody Sun Mar 1 16:36:31 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 4fP74K156Cz6TFxf for ; Sun, 01 Mar 2026 16:36:33 +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 "R12" (not verified)) by mx1.freebsd.org (Postfix) with ESMTPS id 4fP74J4rZwz3XXX for ; Sun, 01 Mar 2026 16:36:32 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1772382992; 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=HCxszVFOsMCwHEZLlCZswBBfY2OBE7UWzwB92wSktiU=; b=u2ukrDUct+cY7H8CNTJBqrvxw/a9GHgGiG3ZjLigxNbRhMNVht2JNoTXH0V3IhjDfyvdX0 rEjQhAwRl+j48wDos21ZjexrQAO6gIGXCEtoQkHBN4k42V+PjVd+TsTz5k0FCiJ13tJtLr wHfsc4lVGfFTFOo97h+t5pAEgSmMBPaYMw1/qO4XaucCtvk4I3v/bTaDA5eu8x+H6RA6vm HSB2AQlGnbkHQbPv/PfWnkkHjDR5r+K4DYFEEbLMSyQin21Dk2ytEVI3LpT8fqzlOoeyvg W/ZUVOgFPKP8kffCbs9uOHkz+5h6cjgaDwBAmyZZHHRSFnvNes+N7Tb3fgN0Ew== ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1772382992; a=rsa-sha256; cv=none; b=rfqgXpX13/MWrbiLlu8H8zdENA+4sMmYb616LeEl44vius2q4MtWv9qgKaFOxUEq2B3Z70 Eot9om0jcOGFicC/CVJluuUNLpgKxVsgFuJcZnyEgxpMTtgYElpuBYxL+ujWmCYYSBxszE jtI9FjalwQiVXAPAgrscxC5IWQwY2T8ly3boUiajt/rPnl+EIknuRBXmgZGIMD2IXy4n3q rEtxpCmclnJl3m36BIWyco24nF43aPxg1h9UMl8+1ls7rD7Z4ZrIbldzbi/ZdzTJzOxQqi FZHmGxPhK8onbseHG7tEy1N7p/+R4RgCP+8T6j2F0qQ5Msvc1MUrxhOCZsbYTA== 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=1772382992; 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=HCxszVFOsMCwHEZLlCZswBBfY2OBE7UWzwB92wSktiU=; b=EpYUXUD7q9NumvnKzfAa9bQ5R/SrfGL1iy4ZESp2bFHvcLUKo52h6CWsxl53EWZBMSHrjD NWrcT9ox9HMNlFuMOb/IGohhvnXposd+KKFlBajjm0yRNWIX1whD6QtHcyBPHj8lHW5ldy 224jIgcKubOeLJ0P3GHMw4JbYp/THTuExIobS12pm2sQcvsNU4YYFk+WrTXhCgvrwr8ijg ho3rsOT6mWEUwuxUiCxWcla0a1Kl6zLkb8XS97+4ZMF4dEKQ8zSQZRBb4wGfGa8YXvzJRZ Viq1NajlJxUz9Co9Vn9pCzcTa1cQJ0NPoLgiWMH3ovZkw//URTB7q97nD59xcw== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) by mxrelay.nyi.freebsd.org (Postfix) with ESMTP id 4fP74H4j7Pzwyw for ; Sun, 01 Mar 2026 16:36:31 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from git (uid 1279) (envelope-from git@FreeBSD.org) id 3a99a by gitrepo.freebsd.org (DragonFly Mail Agent v0.13+ on gitrepo.freebsd.org); Sun, 01 Mar 2026 16:36:31 +0000 To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org Cc: Faraz Vahedi From: Warner Losh Subject: git: 452ee04d62e2 - main - paste(1): Capsicumise 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 MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: imp X-Git-Repository: src X-Git-Refname: refs/heads/main X-Git-Reftype: branch X-Git-Commit: 452ee04d62e22fe923a0b616076715dad0166c98 Auto-Submitted: auto-generated Date: Sun, 01 Mar 2026 16:36:31 +0000 Message-Id: <69a46b0f.3a99a.a05274e@gitrepo.freebsd.org> The branch main has been updated by imp: URL: https://cgit.FreeBSD.org/src/commit/?id=452ee04d62e22fe923a0b616076715dad0166c98 commit 452ee04d62e22fe923a0b616076715dad0166c98 Author: Faraz Vahedi AuthorDate: 2025-08-06 13:31:06 +0000 Commit: Warner Losh CommitDate: 2026-03-01 16:36:15 +0000 paste(1): Capsicumise Signed-off-by: Faraz Vahedi Reviewed by: imp, oshogbo Pull Request: https://github.com/freebsd/freebsd-src/pull/1443 --- usr.bin/paste/Makefile | 8 ++++++++ usr.bin/paste/paste.c | 32 +++++++++++++++++++++++++------- 2 files changed, 33 insertions(+), 7 deletions(-) diff --git a/usr.bin/paste/Makefile b/usr.bin/paste/Makefile index e4f9e6d817b5..33fcb91db84d 100644 --- a/usr.bin/paste/Makefile +++ b/usr.bin/paste/Makefile @@ -1,3 +1,11 @@ +.include + PROG= paste +.if ${MK_CASPER} != "no" && !defined(RESCUE) +LIBADD+= casper +LIBADD+= cap_fileargs +CFLAGS+= -DWITH_CASPER +.endif + .include diff --git a/usr.bin/paste/paste.c b/usr.bin/paste/paste.c index 39e2577200bb..cc029e20ea9c 100644 --- a/usr.bin/paste/paste.c +++ b/usr.bin/paste/paste.c @@ -34,9 +34,12 @@ #include #include +#include +#include #include #include +#include #include #include #include @@ -45,11 +48,14 @@ #include #include +#include +#include + static wchar_t *delim; static int delimcnt; -static int parallel(char **); -static int sequential(char **); +static int parallel(char **, fileargs_t *); +static int sequential(char **, fileargs_t *); static int tr(wchar_t *); static void usage(void) __dead2; @@ -62,6 +68,8 @@ main(int argc, char *argv[]) wchar_t *warg; const char *arg; size_t len; + fileargs_t *fa; + cap_rights_t rights; setlocale(LC_CTYPE, ""); @@ -99,8 +107,18 @@ main(int argc, char *argv[]) delim = tab; } - rval = seq ? sequential(argv) : parallel(argv); + fa = fileargs_init(argc, argv, O_RDONLY, 0, + cap_rights_init(&rights, CAP_READ, CAP_FSTAT, CAP_FCNTL), FA_OPEN); + if (fa == NULL) + err(1, "unable to open system.fileargs service"); + + caph_cache_catpages(); + if (caph_enter_casper() < 0) + err(1, "unable to enter capability mode"); + + rval = seq ? sequential(argv, fa) : parallel(argv, fa); + fileargs_free(fa); exit(rval); } @@ -114,7 +132,7 @@ typedef struct _list { static STAILQ_HEAD(head, _list) lh; static int -parallel(char **argv) +parallel(char **argv, fileargs_t *fa) { LIST *lp; int cnt; @@ -130,7 +148,7 @@ parallel(char **argv) err(1, NULL); if (p[0] == '-' && !p[1]) lp->fp = stdin; - else if (!(lp->fp = fopen(p, "r"))) + else if (!(lp->fp = fileargs_fopen(fa, p, "r"))) err(1, "%s", p); lp->cnt = cnt; lp->name = p; @@ -181,7 +199,7 @@ parallel(char **argv) } static int -sequential(char **argv) +sequential(char **argv, fileargs_t *fa) { FILE *fp; int cnt, failed, needdelim; @@ -192,7 +210,7 @@ sequential(char **argv) for (; (p = *argv); ++argv) { if (p[0] == '-' && !p[1]) fp = stdin; - else if (!(fp = fopen(p, "r"))) { + else if (!(fp = fileargs_fopen(fa, p, "r"))) { warn("%s", p); failed = 1; continue;