Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
freebsd
GitHub Repository: freebsd/freebsd-src
Path: blob/main/libexec/rc/tests/safe_eval_test.sh
288945 views
1
#-
2
# SPDX-License-Identifier: BSD-2-Clause
3
#
4
# Copyright 2026 Simon J Gerraty
5
#
6
7
atf_test_case safe_set_reject
8
safe_set_reject_head()
9
{
10
atf_set "descr" "Verify that safe_set rejects shell meta chars"
11
}
12
13
safe_set_reject_body()
14
{
15
__name="$(atf_get ident)"
16
__input=$(mktemp -t "${__name}.input")
17
18
cat <<'EOF' > "$__input"
19
: ignore=this
20
# ignore this too
21
# avoid # in the middle of a quoted value like:
22
# oops="this # will cause synatx error"
23
quoted="this and that"
24
simple=ok # trailing comments ignored
25
also=ok # leading white-space ignored
26
also_wik=ok
27
host=`hostname`' # backtics - delete line
28
os=$(uname -s) # $() - delete line
29
oops=one;hostname' # replace ; with _ so: one_hostname
30
regex="prefix[abc-]*" # []* replaced with _
31
EOF
32
33
__output=$(safe_set < "$__input" | tr '"\012' '\047;')
34
atf_check_equal "$__output" "quoted='this and that';simple=ok;also=ok;also_wik=ok;oops=one_hostname_;regex='prefix_abc-__';"
35
}
36
37
38
atf_test_case safe_set_xtras
39
safe_set_xtras_head()
40
{
41
atf_set "descr" "Verify that safe_set handles extra allowed chars"
42
}
43
44
safe_set_xtras_body()
45
{
46
__name="$(atf_get ident)"
47
__input=$(mktemp -t "${__name}.input")
48
49
cat <<'EOF' > "$__input"
50
: ignore=this
51
# ignore this too
52
regex="prefix[abc-]*"
53
EOF
54
55
__output=$(safe_set "[]*" < "$__input" | tr '"\012' '\047;')
56
atf_check_equal "$__output" "regex='prefix[abc-]*';"
57
}
58
59
atf_init_test_cases()
60
{
61
SAFE_EVAL=${SAFE_EVAL:-/libexec/safe_eval.sh}
62
. $SAFE_EVAL
63
atf_add_test_case safe_set_reject
64
atf_add_test_case safe_set_xtras
65
}
66
67