mirror of
https://github.com/freebsd/freebsd-src.git
synced 2026-10-28 11:25:21 +01:00
Remove source_rc_confs, inlined from defaults/rc.conf
Inlining source_rc_confs broke sysrc_test:A_flag
While here, switch to SPDX, bump version/copyrights, fixup comments.
Prevent common function override when bsdconfig includes new
sysrc.subr that contains inlined commons. Fix non-unique duplicate
header variable incorrectly shared between bsdconfig's sysrc.subr
include and new sysrc.subr include.
Harden RC_DEFAULTS parameter expansion from DoS-via-glob (SC2223).
Move pgm to the correct location to not override bsdconfig's pgm.
Drop _SYSRC_JAILED=1 that is no-longer needed. Drop i18n from
jail_depend now that messages are inlined to subr.
Reported by: siva
Fixes: eaeb5f29bc sysrc: make independant from bsdconfig(8)
This commit is contained in:
1 parent
302c6d25da
commit
09711ccb09
3 files changed
+43
-136
No files matched your search
@@ -1,6 +1,6 @@
|
||||
if [ ! "$_SYSRC_SUBR" ]; then _SYSRC_SUBR=1
|
||||
if [ ! "$_BSDCONFIG_SYSRC_SUBR" ]; then _BSDCONFIG_SYSRC_SUBR=1
|
||||
#
|
||||
# Copyright (c) 2006-2015 Devin Teske
|
||||
# Copyright (c) 2006-2026 Devin Teske
|
||||
# All rights reserved.
|
||||
#
|
||||
# Redistribution and use in source and binary forms, with or without
|
||||
@@ -24,6 +24,7 @@ if [ ! "$_SYSRC_SUBR" ]; then _SYSRC_SUBR=1
|
||||
# OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
|
||||
# SUCH DAMAGE.
|
||||
#
|
||||
############################################################ INFORMATION
|
||||
#
|
||||
# Compatibility shim: sources the canonical sysrc.subr from /usr/share/sysrc/
|
||||
# and loads bsdconfig-specific i18n messages afterward.
|
||||
@@ -36,13 +37,11 @@ BSDCFG_SHARE="/usr/share/bsdconfig"
|
||||
f_include /usr/share/sysrc/sysrc.subr
|
||||
|
||||
BSDCFG_LIBE="/usr/libexec/bsdconfig"
|
||||
if [ ! "$_SYSRC_JAILED" ]; then
|
||||
f_dprintf "%s: loading includes..." sysrc.subr
|
||||
f_include_lang $BSDCFG_LIBE/include/messages.subr
|
||||
fi
|
||||
f_dprintf "%s: loading includes..." sysrc.subr
|
||||
f_include_lang $BSDCFG_LIBE/include/messages.subr
|
||||
|
||||
############################################################ MAIN
|
||||
|
||||
f_dprintf "%s: Successfully loaded." sysrc.subr
|
||||
|
||||
fi # ! $_SYSRC_SUBR
|
||||
fi # ! $_BSDCONFIG_SYSRC_SUBR
|
||||
+10
-50
@@ -1,29 +1,8 @@
|
||||
#!/bin/sh
|
||||
#-
|
||||
# Copyright (c) 2010-2018 Devin Teske
|
||||
# All rights reserved.
|
||||
#
|
||||
# Redistribution and use in source and binary forms, with or without
|
||||
# modification, are permitted provided that the following conditions
|
||||
# are met:
|
||||
# 1. Redistributions of source code must retain the above copyright
|
||||
# notice, this list of conditions and the following disclaimer.
|
||||
# 2. Redistributions in binary form must reproduce the above copyright
|
||||
# notice, this list of conditions and the following disclaimer in the
|
||||
# documentation and/or other materials provided with the distribution.
|
||||
#
|
||||
# THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
|
||||
# ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
|
||||
# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
|
||||
# ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
|
||||
# FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
|
||||
# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
|
||||
# OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
|
||||
# HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
|
||||
# LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
|
||||
# OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
|
||||
# SUCH DAMAGE.
|
||||
# SPDX-License-Identifier: BSD-2-Clause
|
||||
#
|
||||
# Copyright (c) 2010-2026 Devin Teske
|
||||
#
|
||||
############################################################ INCLUDES
|
||||
|
||||
@@ -32,10 +11,12 @@ SYSRC_SHARE="/usr/share/sysrc"
|
||||
|
||||
############################################################ GLOBALS
|
||||
|
||||
pgm="${0##*/}" # Program basename
|
||||
|
||||
#
|
||||
# Version information
|
||||
#
|
||||
SYSRC_VERSION="7.2 Jun-16,2018"
|
||||
SYSRC_VERSION="7.3 Sep-15,2026"
|
||||
|
||||
#
|
||||
# Options
|
||||
@@ -171,35 +152,14 @@ help()
|
||||
|
||||
# jail_depend
|
||||
#
|
||||
# Dump dependencies such as language-file variables and include files to stdout
|
||||
# to be piped-into sh(1) running via jexec(8)/chroot(8). As a security measure,
|
||||
# this prevents existing language files and library files from being loaded in
|
||||
# the jail. This also relaxes the requirement to have these files in every jail
|
||||
# before sysrc can be used on said jail.
|
||||
# Dump dependencies such as include files to stdout to be piped-into sh(1)
|
||||
# running via jexec(8)/chroot(8). As a security measure, this prevents existing
|
||||
# library files from being loaded in the jail. This also relaxes the
|
||||
# requirement to have these files in every jail before sysrc can be used on
|
||||
# said jail.
|
||||
#
|
||||
jail_depend()
|
||||
{
|
||||
#
|
||||
# Indicate that we are jailed
|
||||
#
|
||||
echo export _SYSRC_JAILED=1
|
||||
|
||||
#
|
||||
# Print i18n language variables (their current values are sanitized
|
||||
# and re-printed for interpretation so that the i18n language files
|
||||
# do not need to exist within the jail).
|
||||
#
|
||||
local var val
|
||||
for var in \
|
||||
msg_cannot_create_permission_denied \
|
||||
msg_permission_denied \
|
||||
msg_previous_syntax_errors \
|
||||
; do
|
||||
val=$( eval echo \"\$$var\" |
|
||||
awk '{ gsub(/'\''/, "'\''\\'\'\''"); print }' )
|
||||
echo $var="'$val'"
|
||||
done
|
||||
|
||||
#
|
||||
# Print include dependencies
|
||||
#
|
||||
|
||||
+27
-79
@@ -1,29 +1,10 @@
|
||||
if [ ! "$_SYSRC_SUBR" ]; then _SYSRC_SUBR=1
|
||||
#
|
||||
# Copyright (c) 2006-2015 Devin Teske
|
||||
# All rights reserved.
|
||||
# SPDX-License-Identifier: BSD-2-Clause
|
||||
#
|
||||
# Redistribution and use in source and binary forms, with or without
|
||||
# modification, are permitted provided that the following conditions
|
||||
# are met:
|
||||
# 1. Redistributions of source code must retain the above copyright
|
||||
# notice, this list of conditions and the following disclaimer.
|
||||
# 2. Redistributions in binary form must reproduce the above copyright
|
||||
# notice, this list of conditions and the following disclaimer in the
|
||||
# documentation and/or other materials provided with the distribution.
|
||||
#
|
||||
# THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
|
||||
# ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
|
||||
# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
|
||||
# ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
|
||||
# FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
|
||||
# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
|
||||
# OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
|
||||
# HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
|
||||
# LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
|
||||
# OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
|
||||
# SUCH DAMAGE.
|
||||
# Copyright (c) 2006-2026 Devin Teske
|
||||
#
|
||||
############################################################ INFORMATION
|
||||
#
|
||||
# This file was split-out of bsdconfig(8) and is now self-contained, and is
|
||||
# no longer dependent on bsdconfig(8) or any of its libraries.
|
||||
@@ -33,7 +14,7 @@ if [ ! "$_SYSRC_SUBR" ]; then _SYSRC_SUBR=1
|
||||
#
|
||||
# Standard pathnames (inherit values from shell if available)
|
||||
#
|
||||
: ${RC_DEFAULTS:="/etc/defaults/rc.conf"}
|
||||
: "${RC_DEFAULTS:=/etc/defaults/rc.conf}"
|
||||
|
||||
############################################################ GLOBALS
|
||||
|
||||
@@ -44,12 +25,7 @@ SUCCESS=0
|
||||
FAILURE=1
|
||||
|
||||
#
|
||||
# Program name (derived from the running script)
|
||||
#
|
||||
pgm="${0##*/}"
|
||||
|
||||
#
|
||||
# Error messages.
|
||||
# Error messages
|
||||
#
|
||||
msg_cannot_create_permission_denied="%s: cannot create %s: Permission denied"
|
||||
msg_permission_denied="%s: %s: Permission denied"
|
||||
@@ -68,24 +44,28 @@ VALID_VARNAME_CHARS="0-9ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz_"
|
||||
|
||||
############################################################ FUNCTIONS
|
||||
|
||||
# f_err $format [$arguments ...]
|
||||
#
|
||||
# Print a message to stderr (fd=2).
|
||||
#
|
||||
f_err()
|
||||
{
|
||||
printf "$@" >&2
|
||||
}
|
||||
|
||||
# f_have $anything ...
|
||||
#
|
||||
# A wrapper to the `type' built-in. Returns true if argument is a valid shell
|
||||
# built-in, keyword, or externally-tracked binary, otherwise false.
|
||||
#
|
||||
if ! type f_have > /dev/null 2>&1; then
|
||||
f_have()
|
||||
{
|
||||
type "$@" > /dev/null 2>&1
|
||||
}
|
||||
fi
|
||||
|
||||
# f_err $format [$arguments ...]
|
||||
#
|
||||
# Print a message to stderr (fd=2).
|
||||
#
|
||||
if ! f_have f_err; then
|
||||
f_err()
|
||||
{
|
||||
printf "$@" >&2
|
||||
}
|
||||
fi
|
||||
|
||||
# setvar $var_to_set [$value]
|
||||
#
|
||||
@@ -125,8 +105,10 @@ fi
|
||||
# Returns error status if the requested variable ($var_to_get) is not set.
|
||||
#
|
||||
# If $var_to_set is missing or NULL, the value of $var_to_get is printed to
|
||||
# standard output for capturing in a sub-shell.
|
||||
# standard output for capturing in a sub-shell (which is less-recommended
|
||||
# because of performance degredation; for example, when called in a loop).
|
||||
#
|
||||
if ! f_have f_getvar; then
|
||||
f_getvar()
|
||||
{
|
||||
local __var_to_get="$1" __var_to_set="$2"
|
||||
@@ -137,21 +119,22 @@ f_getvar()
|
||||
[ "$__var_to_set" ] || { [ "$value" ] && echo "$value"; }
|
||||
return $__retval
|
||||
}
|
||||
fi
|
||||
|
||||
# f_eval_catch [ -d ] [ -e ] [ -k $var_to_set ] $funcname $utility \
|
||||
# f_eval_catch [-de] [-k $var_to_set] $funcname $utility \
|
||||
# $printf_format [$printf_args ...]
|
||||
#
|
||||
# Evaluate the printf-rendered command line and capture its output. The return
|
||||
# status of the command is preserved. If `-k' is given, output is stored in
|
||||
# $var_to_set. If `-e' is given, output is echoed to stderr on failure.
|
||||
#
|
||||
if ! f_have f_eval_catch; then
|
||||
f_eval_catch()
|
||||
{
|
||||
local OPTIND OPTARG __flag __show_err= __var_to_set=
|
||||
while getopts "dek:" __flag > /dev/null; do
|
||||
case "$__flag" in
|
||||
d) : # no-op: always non-interactive here
|
||||
;;
|
||||
d) : ;; # no-op: always non-interactive here
|
||||
e) __show_err=1 ;;
|
||||
k) __var_to_set="$OPTARG" ;;
|
||||
esac
|
||||
@@ -170,44 +153,9 @@ f_eval_catch()
|
||||
[ "$__var_to_set" ] && setvar "$__var_to_set" "$__output"
|
||||
return $__retval
|
||||
}
|
||||
fi
|
||||
|
||||
# source_rc_confs
|
||||
#
|
||||
# Source the rc.conf(5) override files (as defined in rc.conf(5)), preserving
|
||||
# the semantics used by /etc/rc.* at boot-time.
|
||||
#
|
||||
source_rc_confs()
|
||||
{
|
||||
local i sourced_files
|
||||
for i in ${rc_conf_files}; do
|
||||
case ${sourced_files} in
|
||||
*:$i:*)
|
||||
;;
|
||||
*)
|
||||
sourced_files="${sourced_files}:$i:"
|
||||
if [ -r $i ]; then
|
||||
. $i
|
||||
fi
|
||||
;;
|
||||
esac
|
||||
done
|
||||
# Re-do process to pick up [possibly] redefined $rc_conf_files
|
||||
for i in ${rc_conf_files}; do
|
||||
case ${sourced_files} in
|
||||
*:$i:*)
|
||||
;;
|
||||
*)
|
||||
sourced_files="${sourced_files}:$i:"
|
||||
if [ -r $i ]; then
|
||||
. $i
|
||||
fi
|
||||
;;
|
||||
esac
|
||||
done
|
||||
}
|
||||
|
||||
|
||||
# f_clean_env [ --except $varname ... ]
|
||||
# f_clean_env [--except $varname ...]
|
||||
#
|
||||
# Unset all environment variables in the current scope. An optional list of
|
||||
# arguments can be passed, indicating which variables to avoid unsetting; the
|
||||
|
||||
Reference in new issue
Block a user