From nobody Wed Mar 02 23:12:37 2022 X-Original-To: dev-commits-src-branches@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 ED64119F3274; Wed, 2 Mar 2022 23:12:37 +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 "R3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4K88z96Kjrz3sDD; Wed, 2 Mar 2022 23:12:37 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1646262757; 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=FXZbD5HSjnmb+pTS6WFEELPypNGkDVdUxjR04zMihzU=; b=cRGiJooHC9868l2EsfGiHEry5GXwrwR6w1nE9L7HDEPhrVlR3yJ3T7wItZM38NnE4CnuFW zH3jUgNOc2iW42QpBJyYflTV83364i85VJ8mPGzAKIyp1bhvACy2CAVRRafKlr2BXHN78t /pjZ6GxvsuQVmXQioGSHX31cselGo0CAfTHl17Cw8MS7DLDgJx80f+f+WAx6BS48JA14dh 6GHyllDwNct+WCxOwx/NwyEruPfx3QFR3Vp6sYyZIPfHGnqZePX0f9cLIm/TKhHyUiMttX QNjrP+MEfRpb+1tdLmQpFat8/iit09olA+65C//8HBTPetFLnqD9Bs/f+MX/lg== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (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 did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id B97234E02; Wed, 2 Mar 2022 23:12:37 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.16.1/8.16.1) with ESMTP id 222NCbnJ073893; Wed, 2 Mar 2022 23:12:37 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.16.1/8.16.1/Submit) id 222NCbEA073892; Wed, 2 Mar 2022 23:12:37 GMT (envelope-from git) Date: Wed, 2 Mar 2022 23:12:37 GMT Message-Id: <202203022312.222NCbEA073892@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Jamie Gritton Subject: git: 1e40fc6fa9c4 - stable/13 - MFC posixshm: Add a -j option to posixshmcontrol ls, to specify a jail List-Id: Commits to the stable branches of the FreeBSD src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-branches List-Help: List-Post: List-Subscribe: List-Unsubscribe: Sender: owner-dev-commits-src-branches@freebsd.org X-BeenThere: dev-commits-src-branches@freebsd.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: jamie X-Git-Repository: src X-Git-Refname: refs/heads/stable/13 X-Git-Reftype: branch X-Git-Commit: 1e40fc6fa9c4e394195fd2972c8831526c684f5e Auto-Submitted: auto-generated ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1646262757; 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=FXZbD5HSjnmb+pTS6WFEELPypNGkDVdUxjR04zMihzU=; b=RL8qKMcOOv66pDRBoU/9ynppyB8bEJYB7IRr2lKNhiSEuHUU5Sj+XqH0L7iOMVf4ooVdhM XYJpgLDTmVg51wLr+9VkGEtRvglcgnUI5VaseipiPlCfobva+3j5GoX311oZgp57Cqjl2J +4uxuOVSO6jn9oIe94VHbzAdiXmH9zWGse7N30u4u++6xLoTaCbtN4znEZkYlN2FjDiVQv ccM6S2uzRt8D/SBIDGIfqUjNl9W6o487EDJb5XsOMJsBRd68pgzyl+O8TRcIvnG9faqV6c Gwj9Bmgj2Qz6hRhZD7vHTkD+sWrnKPZKIJL7xiTO9FncDD3gbMJrSuD3FoNQTg== ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1646262757; a=rsa-sha256; cv=none; b=YAXXktj1qNEU3frTSQ602xxTgEMYdl77Qay9wTybVyWOLG8eNfvXsNaLDuuIoXlvTdAlgU J1LSSH+w++BL/SJwbyrd1T3oUDwZln6o9+G7/Q3SQ0OpXHoVB4CukXsFWBmvE1Y4H0c3tX LMP2oWMDjCZthnZb56D1YlulwHGalyMBkzg0Ankh2T0SqEJNw/UCaBHhYXT6/oW6QxldVj ZbWSLhnkWn13DLEXe9yHXP4PbyNZ4GnYVCqfedmtT3ZdVwWBpOjkX+K+nVsf5ob/GSSmJb oY7JRiJmXTD+xGYUQjsNlHRNW+pq4tj7/ldtxjxtuXdx8s29lEDq8TU0JqpMAA== ARC-Authentication-Results: i=1; mx1.freebsd.org; none X-ThisMailContainsUnwantedMimeParts: N The branch stable/13 has been updated by jamie: URL: https://cgit.FreeBSD.org/src/commit/?id=1e40fc6fa9c4e394195fd2972c8831526c684f5e commit 1e40fc6fa9c4e394195fd2972c8831526c684f5e Author: Jamie Gritton AuthorDate: 2022-02-27 01:45:28 +0000 Commit: Jamie Gritton CommitDate: 2022-03-02 23:10:33 +0000 MFC posixshm: Add a -j option to posixshmcontrol ls, to specify a jail PR: 257556 Reported by: grembo@ (cherry picked from commit be7cf3f4b8c2818155f5a4a83c64c9ef6a60a320) --- usr.bin/posixshmcontrol/Makefile | 2 +- usr.bin/posixshmcontrol/posixshmcontrol.1 | 8 ++++++- usr.bin/posixshmcontrol/posixshmcontrol.c | 39 ++++++++++++++++++++++++++----- 3 files changed, 41 insertions(+), 8 deletions(-) diff --git a/usr.bin/posixshmcontrol/Makefile b/usr.bin/posixshmcontrol/Makefile index c6f847e18478..e5e9588df7bb 100644 --- a/usr.bin/posixshmcontrol/Makefile +++ b/usr.bin/posixshmcontrol/Makefile @@ -1,6 +1,6 @@ # $FreeBSD$ PROG= posixshmcontrol -LIBADD= util +LIBADD= jail util .include diff --git a/usr.bin/posixshmcontrol/posixshmcontrol.1 b/usr.bin/posixshmcontrol/posixshmcontrol.1 index f6743b070b50..1d8c3438b165 100644 --- a/usr.bin/posixshmcontrol/posixshmcontrol.1 +++ b/usr.bin/posixshmcontrol/posixshmcontrol.1 @@ -27,7 +27,7 @@ .\" .\" $FreeBSD$ .\" -.Dd March 18, 2020 +.Dd February 26, 2022 .Dt POSIXSHMCONTROL 1 .Os .Sh NAME @@ -45,6 +45,7 @@ .Ar ls .Op Fl h .Op Fl n +.Op Fl j Ar jail .Nm .Ar dump .Op Pa path \&... @@ -87,6 +88,11 @@ Unlink the paths specified. .It Ic ls List all linked named shared memory segments visible to the caller. For each segment, the user and group owner, size, and path are displayed. +The +.Fl j +option limits the output to segments within the specified +.Ar jail +name or id. .It Ic dump Output raw bytes values from the segment to standard output. .It Ic stat diff --git a/usr.bin/posixshmcontrol/posixshmcontrol.c b/usr.bin/posixshmcontrol/posixshmcontrol.c index 47a19b78a9d2..f64fcd3dd663 100644 --- a/usr.bin/posixshmcontrol/posixshmcontrol.c +++ b/usr.bin/posixshmcontrol/posixshmcontrol.c @@ -39,6 +39,7 @@ __FBSDID("$FreeBSD$"); #include #include #include +#include #include #include #include @@ -54,7 +55,7 @@ usage(void) fprintf(stderr, "Usage:\n" "posixshmcontrol create [-m ] [-l ] ...\n" "posixshmcontrol rm ...\n" - "posixshmcontrol ls [-h] [-n]\n" + "posixshmcontrol ls [-h] [-n] [-j jail]\n" "posixshmcontrol dump ...\n" "posixshmcontrol stat [-h] [-n] ...\n" "posixshmcontrol truncate [-s ] ...\n"); @@ -221,17 +222,19 @@ shm_decode_mode(mode_t m, char *str) static int list_shm(int argc, char **argv) { - char *buf, *bp, sizebuf[8], str[10]; + char *buf, *bp, *ep, jailpath[MAXPATHLEN], sizebuf[8], str[10]; + const char *jailparam; const struct kinfo_file *kif; struct stat st; - int c, error, fd, mib[3], ret; - size_t len, miblen; - bool hsize, uname; + int c, error, fd, jid, mib[3], ret; + size_t len, jailpathlen, miblen; + bool hsize, jailed, uname; hsize = false; + jailed = false; uname = true; - while ((c = getopt(argc, argv, "hn")) != -1) { + while ((c = getopt(argc, argv, "hj:n")) != -1) { switch (c) { case 'h': hsize = true; @@ -239,6 +242,28 @@ list_shm(int argc, char **argv) case 'n': uname = false; break; + case 'j': + jid = strtoul(optarg, &ep, 10); + if (ep > optarg && !*ep) { + jailparam = "jid"; + jailed = jid > 0; + } else { + jailparam = "name"; + jailed = true; + } + if (jailed) { + if (jail_getv(0, jailparam, optarg, "path", + jailpath, NULL) < 0) { + if (errno == ENOENT) + warnx("no such jail: %s", optarg); + else + warnx("%s", jail_errmsg); + return (1); + } + jailpathlen = strlen(jailpath); + jailpath[jailpathlen] = '/'; + } + break; default: usage(); return (2); @@ -279,6 +304,8 @@ list_shm(int argc, char **argv) kif = (const struct kinfo_file *)(void *)bp; if (kif->kf_structsize == 0) break; + if (jailed && strncmp(kif->kf_path, jailpath, jailpathlen + 1)) + continue; fd = shm_open(kif->kf_path, O_RDONLY, 0); if (fd == -1) { warn("open %s", kif->kf_path);