Path: blob/main/libexec/rc/tests/safe_eval_test.sh
288945 views
#-1# SPDX-License-Identifier: BSD-2-Clause2#3# Copyright 2026 Simon J Gerraty4#56atf_test_case safe_set_reject7safe_set_reject_head()8{9atf_set "descr" "Verify that safe_set rejects shell meta chars"10}1112safe_set_reject_body()13{14__name="$(atf_get ident)"15__input=$(mktemp -t "${__name}.input")1617cat <<'EOF' > "$__input"18: ignore=this19# ignore this too20# avoid # in the middle of a quoted value like:21# oops="this # will cause synatx error"22quoted="this and that"23simple=ok # trailing comments ignored24also=ok # leading white-space ignored25also_wik=ok26host=`hostname`' # backtics - delete line27os=$(uname -s) # $() - delete line28oops=one;hostname' # replace ; with _ so: one_hostname29regex="prefix[abc-]*" # []* replaced with _30EOF3132__output=$(safe_set < "$__input" | tr '"\012' '\047;')33atf_check_equal "$__output" "quoted='this and that';simple=ok;also=ok;also_wik=ok;oops=one_hostname_;regex='prefix_abc-__';"34}353637atf_test_case safe_set_xtras38safe_set_xtras_head()39{40atf_set "descr" "Verify that safe_set handles extra allowed chars"41}4243safe_set_xtras_body()44{45__name="$(atf_get ident)"46__input=$(mktemp -t "${__name}.input")4748cat <<'EOF' > "$__input"49: ignore=this50# ignore this too51regex="prefix[abc-]*"52EOF5354__output=$(safe_set "[]*" < "$__input" | tr '"\012' '\047;')55atf_check_equal "$__output" "regex='prefix[abc-]*';"56}5758atf_init_test_cases()59{60SAFE_EVAL=${SAFE_EVAL:-/libexec/safe_eval.sh}61. $SAFE_EVAL62atf_add_test_case safe_set_reject63atf_add_test_case safe_set_xtras64}656667