mirror of
https://github.com/opnsense/src.git
synced 2026-02-14 00:04:14 -05:00
Add some conservative checks on function names: - Disallow expansions or quoting characters; these can only be called via strange control characters - Disallow '/'; these functions cannot be called anyway, as exec.c assumes they are pathnames - Make the CTL* bytes work properly in function names. These are syntax errors. POSIX does not require us to support more than names (letters, digits and underscores, not starting with a digit), but I do not want to restrict it that much at this time. Exp-run done by: pav (with some other sh(1) changes)
25 lines
474 B
Text
25 lines
474 B
Text
# $FreeBSD$
|
|
# POSIX does not require these bytes to work in function names,
|
|
# but making them all work seems a good goal.
|
|
|
|
failures=0
|
|
unset LC_ALL
|
|
export LC_CTYPE=en_US.ISO8859-1
|
|
i=128
|
|
set -f
|
|
while [ "$i" -le 255 ]; do
|
|
c=$(printf \\"$(printf %o "$i")")
|
|
ok=0
|
|
eval "$c() { ok=1; }"
|
|
$c
|
|
ok1=$ok
|
|
ok=0
|
|
"$c"
|
|
if [ "$ok" != 1 ] || [ "$ok1" != 1 ]; then
|
|
echo "Bad results for character $i" >&2
|
|
: $((failures += 1))
|
|
fi
|
|
unset -f $c
|
|
i=$((i+1))
|
|
done
|
|
exit $((failures > 0))
|