1
0
mirror of https://github.com/TheLocehiliosan/yadm synced 2026-03-02 03:49:29 +00:00

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:
Tim Byrne
2017-09-15 23:00:25 -05:00
parent 57866714c4
commit b78bb1eef4
3 changed files with 28 additions and 19 deletions

23
yadm
View File

@@ -178,9 +178,11 @@ function alt() {
if [[ ! $glob =~ ^# && ! $glob =~ ^[[:space:]]*$ ]] ; then
# echo "working on ->$glob<-"
local IFS=$'\n'
for matching_file in $(eval "$LS_PROGRAM" -d "$glob" 2>/dev/null); do
ENC_FILES[$index]="$matching_file"
((index++))
for matching_file in $glob; do
if [ -e "$matching_file" ]; then
ENC_FILES[$index]="$matching_file"
((index++))
fi
done
fi
done < "$YADM_ENCRYPT"
@@ -460,9 +462,11 @@ function encrypt() {
while IFS='' read -r glob || [ -n "$glob" ]; do
if [[ ! $glob =~ ^# && ! $glob =~ ^[[:space:]]*$ ]] ; then
local IFS=$'\n'
for matching_file in $(eval "$LS_PROGRAM" -d "$glob" 2>/dev/null); do
ENC_FILES[$index]="$matching_file"
((index++))
for matching_file in $glob; do
if [ -e "$matching_file" ]; then
ENC_FILES[$index]="$matching_file"
((index++))
fi
done
fi
done < "$YADM_ENCRYPT"
@@ -710,8 +714,11 @@ function perms() {
#; include globs found in YADM_ENCRYPT (if present)
if [ -f "$YADM_ENCRYPT" ] ; then
while IFS='' read -r glob || [ -n "$glob" ]; do
if [[ ! $glob =~ ^# ]] ; then
GLOBS=("${GLOBS[@]}" $(eval "$LS_PROGRAM" -d "$glob" 2>/dev/null))
if [[ ! $glob =~ ^# && ! $glob =~ ^[[:space:]]*$ ]] ; then
local IFS=$'\n'
for matching_file in $glob; do
GLOBS=("${GLOBS[@]}" "$matching_file")
done
fi
done < "$YADM_ENCRYPT"
fi