Found how to break it

Signed-off-by: fbt <fbt@fleshless.org>
This commit is contained in:
Jack L. Frost 2018-01-10 22:00:22 +03:00
parent 339ccd1b47
commit 9516f9d5fe
1 changed files with 8 additions and 2 deletions

10
ssm
View File

@ -7,6 +7,12 @@ is_function() [[ $(type -t $1 2>/dev/null) == 'function' ]]
var() {
declare varname=$1; shift
# This enforces bash's grammar against things like
# var 'cat /etc/shadow; foo' ...
[[ $varname =~ ^[a-zA-Z_][a-zA-Z0-9_]+?$ ]] || {
die 73 "On line $LINENO, in $FUNCNAME: Invalid identifier: '$varname'"
}
if ! is_function "$varname"; then
eval "
${varname}() {
@ -27,7 +33,7 @@ var() {
('u') mode=includes;;
(*) die 71 \"Syntax error in \$FUNCNAME!\";;
(*) die 71 \"Syntax error in ${varname}!\";;
esac
shift
else
@ -62,7 +68,7 @@ var() {
(is_file) [[ -f \"\$_var\" ]];;
(is_dir|is_directory) [[ -d \"\$_var\" ]];;
(*) die 71 \"Syntax error in \$FUNCNAME!\";;
(*) die 71 \"Syntax error in ${varname}!\";;
esac
}; readonly -f \"${varname}\"