kiss: disallow newlines in arguments

This commit is contained in:
Dylan Araps 2021-07-19 11:49:38 +03:00
parent 75295c11e8
commit 8ead0b1096
No known key found for this signature in database
GPG Key ID: 13295DAC2CF13B5C

24
kiss
View File

@ -225,8 +225,9 @@ sh256() {
esac; shift; done
printf '%s\n' "$@"
IFS="$newline"
hash=$*
# Convert the list items to a newline separated string.
IFS=$newline hash=$*
unset IFS
}
@ -1647,25 +1648,26 @@ args() {
# not be used here as they would conflict with kiss extensions.
case $action in
a|alternatives)
case $1 in *\**|*\!*|*\[*|*\ *|*\]*|*/*)
die "Invalid argument: '!*[ ]/' ($1)"
case $1 in *\**|*\!*|*\[*|*\ *|*\]*|*/*|*"$newline"*)
die "Invalid argument: '!*[ ]/\\n' ($1)"
esac
;;
b|build|c|checksum|d|download|i|install|l|list|r|remove)
for _arg do case ${action%%"${action#?}"}-$_arg in
i-*\!*|i-*\**|i-*\[*|i-*\ *|i-*\]*)
die "Argument contains invalid characters: '!*[ ]' ('$_arg')"
i-*\!*|i-*\**|i-*\[*|i-*\ *|i-*\]*|i-*"$newline"*)
die "Invalid argument: '!*[ ]\\n' ('$_arg')"
;;
[!i]-*\!*|[!i]-*\**|[!i]-*\[*|[!i]-*\ *|[!i]-*\]*|[!i]-*/*)
die "Argument contains invalid characters: '!*[ ]/' ('$_arg')"
[!i]-*\!*|[!i]-*\**|[!i]-*\[*|[!i]-*\ *|\
[!i]-*\]*|[!i]-*/*|[!i]-*"$newline"*)
die "Invalid argument: '!*[ ]/\\n' ('$_arg')"
;;
esac done
# When no arguments are given on the command-line, use the basename of
# the current directory as the package name and add the parent directory
# to the running process' KISS_PATH.
# When no arguments are given on the command-line, use the basename
# of the current directory as the package name and add the parent
# directory to the running process' KISS_PATH.
case ${action%%"${action#?}"}-$# in [!l]-0)
export KISS_PATH=${PWD%/*}:$KISS_PATH
set -- "${PWD##*/}"