|
@ -5,6 +5,11 @@ EXEDIR="$(cd "$EXEDIR"; pwd)" |
|
|
BINS=binaries |
|
|
BINS=binaries |
|
|
BINDIR="$EXEDIR/$BINS" |
|
|
BINDIR="$EXEDIR/$BINS" |
|
|
|
|
|
|
|
|
|
|
|
exists() |
|
|
|
|
|
{ |
|
|
|
|
|
which "$1" >/dev/null 2>/dev/null |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
check_dir() |
|
|
check_dir() |
|
|
{ |
|
|
{ |
|
|
local dir="$BINDIR/$1" |
|
|
local dir="$BINDIR/$1" |
|
@ -13,8 +18,15 @@ check_dir() |
|
|
if [ -f "$exe" ]; then |
|
|
if [ -f "$exe" ]; then |
|
|
if [ -x "$exe" ]; then |
|
|
if [ -x "$exe" ]; then |
|
|
# ash and dash try to execute invalid executables as a script. they interpret binary garbage with possible negative consequences |
|
|
# ash and dash try to execute invalid executables as a script. they interpret binary garbage with possible negative consequences |
|
|
# find do not use shell exec |
|
|
# bash do not do this |
|
|
out=$(echo 0.0.0.0 | find "$dir" -maxdepth 1 -name ip2net -exec {} \; 2>/dev/null) |
|
|
if exists bash; then |
|
|
|
|
|
out=$(echo 0.0.0.0 | bash -c "$exe" 2>/dev/null) |
|
|
|
|
|
else |
|
|
|
|
|
# find do not use its own shell exec |
|
|
|
|
|
# it uses execvp(). in musl libc it does not call shell, in glibc it DOES call /bin/sh |
|
|
|
|
|
# that's why prefer bash if present |
|
|
|
|
|
out=$(echo 0.0.0.0 | find "$dir" -maxdepth 1 -name ip2net -exec {} \; 2>/dev/null) |
|
|
|
|
|
fi |
|
|
[ -n "$out" ] |
|
|
[ -n "$out" ] |
|
|
else |
|
|
else |
|
|
echo "$exe is not executable. set proper chmod." |
|
|
echo "$exe is not executable. set proper chmod." |
|
|