Eliminate the use of eval
`eval` has always been used to process the globs in `.yadm/encrypt`. This is being removed, as there is a risk of executing "dirty" data found in `.yadm/encrypt`. Caveats of this change: * Brace and tilde expansion will no longer work in `.yadm/encrypt` * Paths with spaces must not be quoted anymore
This commit is contained in:
parent
57866714c4
commit
b78bb1eef4
3 changed files with 28 additions and 19 deletions
|
@ -10,7 +10,7 @@ function create_encrypt() {
|
||||||
echo "$efile" >> "$T_YADM_ENCRYPT"
|
echo "$efile" >> "$T_YADM_ENCRYPT"
|
||||||
echo "$efile" >> "$T_DIR_WORK/$efile"
|
echo "$efile" >> "$T_DIR_WORK/$efile"
|
||||||
mkdir -p "$T_DIR_WORK/dir one/$efile"
|
mkdir -p "$T_DIR_WORK/dir one/$efile"
|
||||||
echo "'dir one'/$efile/file1" >> "$T_YADM_ENCRYPT"
|
echo "dir one/$efile/file1" >> "$T_YADM_ENCRYPT"
|
||||||
echo "dir one/$efile/file1" >> "$T_DIR_WORK/dir one/$efile/file1"
|
echo "dir one/$efile/file1" >> "$T_DIR_WORK/dir one/$efile/file1"
|
||||||
done
|
done
|
||||||
}
|
}
|
||||||
|
|
|
@ -96,7 +96,8 @@ EOF
|
||||||
while IFS='' read -r glob || [ -n "$glob" ]; do
|
while IFS='' read -r glob || [ -n "$glob" ]; do
|
||||||
if [[ ! $glob =~ ^# && ! $glob =~ ^[[:space:]]*$ ]] ; then
|
if [[ ! $glob =~ ^# && ! $glob =~ ^[[:space:]]*$ ]] ; then
|
||||||
local IFS=$'\n'
|
local IFS=$'\n'
|
||||||
for matching_file in $(eval ls -d "$glob" 2>/dev/null); do
|
for matching_file in $glob; do
|
||||||
|
if [ -e "$matching_file" ]; then
|
||||||
if [ -d "$matching_file" ]; then
|
if [ -d "$matching_file" ]; then
|
||||||
echo "$matching_file/"
|
echo "$matching_file/"
|
||||||
for subfile in "$matching_file"/*; do
|
for subfile in "$matching_file"/*; do
|
||||||
|
@ -105,6 +106,7 @@ EOF
|
||||||
else
|
else
|
||||||
echo "$matching_file"
|
echo "$matching_file"
|
||||||
fi
|
fi
|
||||||
|
fi
|
||||||
done
|
done
|
||||||
fi
|
fi
|
||||||
done < "$T_YADM_ENCRYPT" | sort > "$T_TMP/expected_list"
|
done < "$T_YADM_ENCRYPT" | sort > "$T_TMP/expected_list"
|
||||||
|
@ -297,7 +299,7 @@ EOF
|
||||||
#; add paths with spaces to YADM_ARCHIVE
|
#; add paths with spaces to YADM_ARCHIVE
|
||||||
local original_encrypt
|
local original_encrypt
|
||||||
original_encrypt=$(cat "$T_YADM_ENCRYPT")
|
original_encrypt=$(cat "$T_YADM_ENCRYPT")
|
||||||
echo -e "'space test'/file*" >> "$T_YADM_ENCRYPT"
|
echo -e "space test/file*" >> "$T_YADM_ENCRYPT"
|
||||||
|
|
||||||
#; run encrypt
|
#; run encrypt
|
||||||
run expect <<EOF
|
run expect <<EOF
|
||||||
|
@ -331,7 +333,7 @@ EOF
|
||||||
#; add directory paths to YADM_ARCHIVE
|
#; add directory paths to YADM_ARCHIVE
|
||||||
local original_encrypt
|
local original_encrypt
|
||||||
original_encrypt=$(cat "$T_YADM_ENCRYPT")
|
original_encrypt=$(cat "$T_YADM_ENCRYPT")
|
||||||
echo -e "'space test'" >> "$T_YADM_ENCRYPT"
|
echo -e "space test" >> "$T_YADM_ENCRYPT"
|
||||||
|
|
||||||
#; run encrypt
|
#; run encrypt
|
||||||
run expect <<EOF
|
run expect <<EOF
|
||||||
|
|
15
yadm
15
yadm
|
@ -178,9 +178,11 @@ function alt() {
|
||||||
if [[ ! $glob =~ ^# && ! $glob =~ ^[[:space:]]*$ ]] ; then
|
if [[ ! $glob =~ ^# && ! $glob =~ ^[[:space:]]*$ ]] ; then
|
||||||
# echo "working on ->$glob<-"
|
# echo "working on ->$glob<-"
|
||||||
local IFS=$'\n'
|
local IFS=$'\n'
|
||||||
for matching_file in $(eval "$LS_PROGRAM" -d "$glob" 2>/dev/null); do
|
for matching_file in $glob; do
|
||||||
|
if [ -e "$matching_file" ]; then
|
||||||
ENC_FILES[$index]="$matching_file"
|
ENC_FILES[$index]="$matching_file"
|
||||||
((index++))
|
((index++))
|
||||||
|
fi
|
||||||
done
|
done
|
||||||
fi
|
fi
|
||||||
done < "$YADM_ENCRYPT"
|
done < "$YADM_ENCRYPT"
|
||||||
|
@ -460,9 +462,11 @@ function encrypt() {
|
||||||
while IFS='' read -r glob || [ -n "$glob" ]; do
|
while IFS='' read -r glob || [ -n "$glob" ]; do
|
||||||
if [[ ! $glob =~ ^# && ! $glob =~ ^[[:space:]]*$ ]] ; then
|
if [[ ! $glob =~ ^# && ! $glob =~ ^[[:space:]]*$ ]] ; then
|
||||||
local IFS=$'\n'
|
local IFS=$'\n'
|
||||||
for matching_file in $(eval "$LS_PROGRAM" -d "$glob" 2>/dev/null); do
|
for matching_file in $glob; do
|
||||||
|
if [ -e "$matching_file" ]; then
|
||||||
ENC_FILES[$index]="$matching_file"
|
ENC_FILES[$index]="$matching_file"
|
||||||
((index++))
|
((index++))
|
||||||
|
fi
|
||||||
done
|
done
|
||||||
fi
|
fi
|
||||||
done < "$YADM_ENCRYPT"
|
done < "$YADM_ENCRYPT"
|
||||||
|
@ -710,8 +714,11 @@ function perms() {
|
||||||
#; include globs found in YADM_ENCRYPT (if present)
|
#; include globs found in YADM_ENCRYPT (if present)
|
||||||
if [ -f "$YADM_ENCRYPT" ] ; then
|
if [ -f "$YADM_ENCRYPT" ] ; then
|
||||||
while IFS='' read -r glob || [ -n "$glob" ]; do
|
while IFS='' read -r glob || [ -n "$glob" ]; do
|
||||||
if [[ ! $glob =~ ^# ]] ; then
|
if [[ ! $glob =~ ^# && ! $glob =~ ^[[:space:]]*$ ]] ; then
|
||||||
GLOBS=("${GLOBS[@]}" $(eval "$LS_PROGRAM" -d "$glob" 2>/dev/null))
|
local IFS=$'\n'
|
||||||
|
for matching_file in $glob; do
|
||||||
|
GLOBS=("${GLOBS[@]}" "$matching_file")
|
||||||
|
done
|
||||||
fi
|
fi
|
||||||
done < "$YADM_ENCRYPT"
|
done < "$YADM_ENCRYPT"
|
||||||
fi
|
fi
|
||||||
|
|
Loading…
Reference in a new issue