opnsense-src/tools/regression/bin/sh/parser/func1.0
Jilles Tjoelker 074e83b14e sh: Make sure defined functions can actually be called.
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)
2010-10-24 20:45:13 +00:00

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))