aboutsummaryrefslogtreecommitdiff
path: root/usr.sbin/sysrc
diff options
context:
space:
mode:
Diffstat (limited to 'usr.sbin/sysrc')
-rw-r--r--usr.sbin/sysrc/sysrc12
1 files changed, 12 insertions, 0 deletions
diff --git a/usr.sbin/sysrc/sysrc b/usr.sbin/sysrc/sysrc
index 1da537fd5992..404b7865ac7c 100644
--- a/usr.sbin/sysrc/sysrc
+++ b/usr.sbin/sysrc/sysrc
@@ -370,6 +370,18 @@ if [ "$LIST_SERVICE_CONFS" ]; then
fi
#
+# Validate arguments
+#
+for name in "$@"; do
+ # NB: shell expansion syntax removed first
+ name="${name%%:[+=-]*}"
+ name="${name%%[%#+=-]*}"
+ [ "$name" = "${name#*[!$VALID_VARNAME_CHARS]}" ] || die \
+ "%s: %s: name contains characters not allowed in shell" \
+ "$pgm" "$name"
+done
+
+#
# Process `-s name' argument
#
if [ "$SERVICE" -a ! "${RC_CONFS+set}" ]; then