stdenv: Harden hook runners
Instead of eval, use a "nameref" to get the name of the array and iterate with that. Also, make the for-loop parameter a local variable, too.
This commit is contained in:
parent
74f55017d2
commit
a14cf06182
@ -17,8 +17,9 @@ runHook() {
|
|||||||
shift
|
shift
|
||||||
local var="$hookName"
|
local var="$hookName"
|
||||||
if [[ "$hookName" =~ Hook$ ]]; then var+=s; else var+=Hooks; fi
|
if [[ "$hookName" =~ Hook$ ]]; then var+=s; else var+=Hooks; fi
|
||||||
eval "local -a dummy=(\"\${$var[@]}\")"
|
local -n var
|
||||||
for hook in "_callImplicitHook 0 $hookName" "${dummy[@]}"; do
|
local hook
|
||||||
|
for hook in "_callImplicitHook 0 $hookName" "${var[@]}"; do
|
||||||
_eval "$hook" "$@"
|
_eval "$hook" "$@"
|
||||||
done
|
done
|
||||||
return 0
|
return 0
|
||||||
@ -32,8 +33,9 @@ runOneHook() {
|
|||||||
shift
|
shift
|
||||||
local var="$hookName"
|
local var="$hookName"
|
||||||
if [[ "$hookName" =~ Hook$ ]]; then var+=s; else var+=Hooks; fi
|
if [[ "$hookName" =~ Hook$ ]]; then var+=s; else var+=Hooks; fi
|
||||||
eval "local -a dummy=(\"\${$var[@]}\")"
|
local -n var
|
||||||
for hook in "_callImplicitHook 1 $hookName" "${dummy[@]}"; do
|
local hook
|
||||||
|
for hook in "_callImplicitHook 1 $hookName" "${var[@]}"; do
|
||||||
if _eval "$hook" "$@"; then
|
if _eval "$hook" "$@"; then
|
||||||
return 0
|
return 0
|
||||||
fi
|
fi
|
||||||
|
Loading…
x
Reference in New Issue
Block a user