From nobody Mon Feb 12 22:40:30 2024 X-Original-To: dev-commits-src-main@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 4TYfYV6H33z595fD; Mon, 12 Feb 2024 22:40:30 +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 4TYfYV5l2mz4RvD; Mon, 12 Feb 2024 22:40:30 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1707777630; 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=IiG6wK9OjDjlqT/y3eUG9yxPQUUeP4kxrZlMAExC0cg=; b=eWU5UlSqeLCoUco3DqlY8EbgjLopeCCieNWv+ios16G3dB7fGHvZEM9GhoDBcD/hF3XCH5 7qOwAIrEjX90679T3XqNIzQVk9VAdHY2MsuooeQ5nOPbxQpmOeB446sbCjNoj7Ha6RFiPk QR8+OG9KtlN5F61enifDpvy+CznoGsLjSlhW4qGORpvctZ0vg22KtyOO5E7Tp837rFBNie qxXGZm8OYvacxJPGPuaAYUqjsanGA874KCUM8rej4q+y6uiZFrPb1FPSWJ/oiny/I0O2ZR 2i92KF9drUBhNSbQo01oEyyGWgSKXnKZik7O5SduPs3UOKPd7g1XIBvy9gVUzg== ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1707777630; a=rsa-sha256; cv=none; b=RJoQQN42JfOkT8kiwc/Yt/d2Kiud7H8uSa2FN86WLenY2lRzsmxbYSHeUqFyQsJDp5J9+X N3e9wTqrheHasvq9tvv9wcafHpAOr4/N0eytX8CZua5BCfi3qlv/9JXB5hTiYx+e9ofv8t UFgAnbYSZQReXRqesM6vAvpuOAAlYYkDHYopMELCErQQi14mLqzU9PPMOZ0fm8+MPR4nke JM+4M75UJ27XubbcOnTOypR/PjH/fIzAZHBmD6x8gT4aTPSftCFRsImVgohJUd3TStoLSb RAKk/yFAQxBKmo5aSUiSTR5fQptae0yOiMbQy4Ut1Mi27D5YIAb/JPFJGAgYzg== 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=1707777630; 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=IiG6wK9OjDjlqT/y3eUG9yxPQUUeP4kxrZlMAExC0cg=; b=OEHg7F4WlRjzkOi1trFAMrFBQ55xrjRBQTLrOjAjTli4jeYA/hQWDc67epvQI3MqwVIKHw k2Vf8F9fuB32gqwVPiz7gh8+8qWIpdui8P8PC3k4cjvJxqvEN9ZUNfABJIw21EA+7f7L2J sLq8O4UHc+a0OYI78oDAb2Qvr3YOTK86HNxDpJhMe4PXUQX0omY3b8iVBIKPt5v6QKYJi1 tK2DqFS6Q/sWbuJ9fcniwFLT6fTyKIaOTf5Ll2ajBhHTKt9qFEOLyOhxP3GkV5quxgmEci apKM6CD/v2RobXF8GRA0WiM+Gv32s9JBgw0qbqSsV8WZZS8r+LbhLpY295OiAg== 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 4TYfYV4NWnzqDv; Mon, 12 Feb 2024 22:40:30 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.17.1/8.17.1) with ESMTP id 41CMeUkx010659; Mon, 12 Feb 2024 22:40:30 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.17.1/8.17.1/Submit) id 41CMeUxj010656; Mon, 12 Feb 2024 22:40:30 GMT (envelope-from git) Date: Mon, 12 Feb 2024 22:40:30 GMT Message-Id: <202402122240.41CMeUxj010656@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org From: "Simon J. Gerraty" Subject: git: b75bb99621fb - main - rc.subr add Exists so we can find sed List-Id: Commit messages for the main branch of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-main List-Help: List-Post: List-Subscribe: List-Unsubscribe: Sender: owner-dev-commits-src-main@freebsd.org X-BeenThere: dev-commits-src-main@freebsd.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: sjg X-Git-Repository: src X-Git-Refname: refs/heads/main X-Git-Reftype: branch X-Git-Commit: b75bb99621fbebae3b7f56ea01e711333d0455d8 Auto-Submitted: auto-generated The branch main has been updated by sjg: URL: https://cgit.FreeBSD.org/src/commit/?id=b75bb99621fbebae3b7f56ea01e711333d0455d8 commit b75bb99621fbebae3b7f56ea01e711333d0455d8 Author: Simon J. Gerraty AuthorDate: 2024-02-12 22:39:20 +0000 Commit: Simon J. Gerraty CommitDate: 2024-02-12 22:39:20 +0000 rc.subr add Exists so we can find sed SED=`Exists -x /usr/bin/sed /rescue/sed` avoids adding /rescure to $PATH, and allows use of sed before /usr is mounted (if a separate filesystem). Reviewed by: jlduran_gmail.com Differential Revision: https://reviews.freebsd.org/D43826 --- libexec/rc/rc.subr | 40 +++++++++++++++++++++++++++++++++++----- libexec/rc/safe_eval.sh | 2 +- 2 files changed, 36 insertions(+), 6 deletions(-) diff --git a/libexec/rc/rc.subr b/libexec/rc/rc.subr index d76f0ba4f9a7..16b2c9fc5e88 100644 --- a/libexec/rc/rc.subr +++ b/libexec/rc/rc.subr @@ -156,6 +156,33 @@ vdot() return $rc } +# Exists [test] file ... +# report the first "file" that passes "test" (default -s). +Exists() +{ + local f _t=-s + + while :; do + : 1=$1 + case "$1" in + -?) + _t=$1 + shift + ;; + *) + break + ;; + esac + done + + for f in "$@"; do + [ $_t $f ] || continue + echo $f + return 0 + done + return 1 +} + # do we have $1 (could be a function) have() { @@ -179,8 +206,8 @@ rc_trace() [ -f $cf ] || return if [ -s $cf ]; then # don't try to set RC_LEVEL without sed - if [ -x /usr/bin/sed ]; then - RC_LEVEL=$(sed -n '/^RC_LEVEL=/ { s/.*=//p;q; }' $cf) + if [ -n "$SED" ]; then + RC_LEVEL=$($SED -n '/^RC_LEVEL=/ { s/.*=//p;q; }' $cf) RC_LEVEL=${RC_LEVEL:-0} fi else @@ -2498,6 +2525,8 @@ if [ -n "$boottrace_cmd" ] && [ "`${SYSCTL_N} -q kern.boottrace.enabled`" = "1" rc_boottrace=YES fi +SED=${SED:-$(Exists -x /usr/bin/sed /rescue/sed)} + # Allow for local additions and overrides. # Use vdot to ensure the file has not been tampered with. vdot /etc/local.rc.subr @@ -2514,10 +2543,11 @@ if ! have basename; then { return 0 } -else - # safe_eval.sh provides safe_dot - for untrusted files - $_SAFE_EVAL_SH vdot /libexec/safe_eval.sh + # we cannot use safe_dot without sed + [ -z "$SED" ] && _SAFE_EVAL_SH=: fi +# safe_eval.sh provides safe_dot - for untrusted files +$_SAFE_EVAL_SH vdot /libexec/safe_eval.sh $_DEBUG_SH vdot /libexec/debug.sh # Ensure we can still operate if debug.sh and diff --git a/libexec/rc/safe_eval.sh b/libexec/rc/safe_eval.sh index bd9bc9394814..10b6ed09c769 100644 --- a/libexec/rc/safe_eval.sh +++ b/libexec/rc/safe_eval.sh @@ -24,7 +24,7 @@ _SAFE_EVAL_SH=: # any non-alphanumeric chars are replaced with '_' # safe_set() { - sed 's/[ ]*#.*//;/^[A-Za-z_][A-Za-z0-9_]*=/!d;s;[^A-Za-z0-9_. "$,/=-];_;g' + ${SED:-sed} 's/[ ]*#.*//;/^[A-Za-z_][A-Za-z0-9_]*=/!d;s;[^A-Za-z0-9_. "$,/=-];_;g' } ##