1*701d7be6SSimon J. Gerraty#- 2*701d7be6SSimon J. Gerraty# SPDX-License-Identifier: BSD-2-Clause 3*701d7be6SSimon J. Gerraty# 4*701d7be6SSimon J. Gerraty# Copyright 2026 Simon J Gerraty 5*701d7be6SSimon J. Gerraty# 6*701d7be6SSimon J. Gerraty 7*701d7be6SSimon J. Gerratyatf_test_case safe_set_reject 8*701d7be6SSimon J. Gerratysafe_set_reject_head() 9*701d7be6SSimon J. Gerraty{ 10*701d7be6SSimon J. Gerraty atf_set "descr" "Verify that safe_set rejects shell meta chars" 11*701d7be6SSimon J. Gerraty} 12*701d7be6SSimon J. Gerraty 13*701d7be6SSimon J. Gerratysafe_set_reject_body() 14*701d7be6SSimon J. Gerraty{ 15*701d7be6SSimon J. Gerraty __name="$(atf_get ident)" 16*701d7be6SSimon J. Gerraty __input=$(mktemp -t "${__name}.input") 17*701d7be6SSimon J. Gerraty 18*701d7be6SSimon J. Gerraty cat <<'EOF' > "$__input" 19*701d7be6SSimon J. Gerraty: ignore=this 20*701d7be6SSimon J. Gerraty# ignore this too 21*701d7be6SSimon J. Gerraty# avoid # in the middle of a quoted value like: 22*701d7be6SSimon J. Gerraty# oops="this # will cause synatx error" 23*701d7be6SSimon J. Gerratyquoted="this and that" 24*701d7be6SSimon J. Gerratysimple=ok # trailing comments ignored 25*701d7be6SSimon J. Gerraty also=ok # leading white-space ignored 26*701d7be6SSimon J. Gerraty also_wik=ok 27*701d7be6SSimon J. Gerratyhost=`hostname`' # backtics - delete line 28*701d7be6SSimon J. Gerratyos=$(uname -s) # $() - delete line 29*701d7be6SSimon J. Gerratyoops=one;hostname' # replace ; with _ so: one_hostname 30*701d7be6SSimon J. Gerratyregex="prefix[abc-]*" # []* replaced with _ 31*701d7be6SSimon J. GerratyEOF 32*701d7be6SSimon J. Gerraty 33*701d7be6SSimon J. Gerraty __output=$(safe_set < "$__input" | tr '"\012' '\047;') 34*701d7be6SSimon J. Gerraty atf_check_equal "$__output" "quoted='this and that';simple=ok;also=ok;also_wik=ok;oops=one_hostname_;regex='prefix_abc-__';" 35*701d7be6SSimon J. Gerraty} 36*701d7be6SSimon J. Gerraty 37*701d7be6SSimon J. Gerraty 38*701d7be6SSimon J. Gerratyatf_test_case safe_set_xtras 39*701d7be6SSimon J. Gerratysafe_set_xtras_head() 40*701d7be6SSimon J. Gerraty{ 41*701d7be6SSimon J. Gerraty atf_set "descr" "Verify that safe_set handles extra allowed chars" 42*701d7be6SSimon J. Gerraty} 43*701d7be6SSimon J. Gerraty 44*701d7be6SSimon J. Gerratysafe_set_xtras_body() 45*701d7be6SSimon J. Gerraty{ 46*701d7be6SSimon J. Gerraty __name="$(atf_get ident)" 47*701d7be6SSimon J. Gerraty __input=$(mktemp -t "${__name}.input") 48*701d7be6SSimon J. Gerraty 49*701d7be6SSimon J. Gerraty cat <<'EOF' > "$__input" 50*701d7be6SSimon J. Gerraty: ignore=this 51*701d7be6SSimon J. Gerraty# ignore this too 52*701d7be6SSimon J. Gerratyregex="prefix[abc-]*" 53*701d7be6SSimon J. GerratyEOF 54*701d7be6SSimon J. Gerraty 55*701d7be6SSimon J. Gerraty __output=$(safe_set "[]*" < "$__input" | tr '"\012' '\047;') 56*701d7be6SSimon J. Gerraty atf_check_equal "$__output" "regex='prefix[abc-]*';" 57*701d7be6SSimon J. Gerraty} 58*701d7be6SSimon J. Gerraty 59*701d7be6SSimon J. Gerratyatf_init_test_cases() 60*701d7be6SSimon J. Gerraty{ 61*701d7be6SSimon J. Gerraty SAFE_EVAL=${SAFE_EVAL:-/libexec/safe_eval.sh} 62*701d7be6SSimon J. Gerraty . $SAFE_EVAL 63*701d7be6SSimon J. Gerraty atf_add_test_case safe_set_reject 64*701d7be6SSimon J. Gerraty atf_add_test_case safe_set_xtras 65*701d7be6SSimon J. Gerraty} 66