mirror of
				https://github.com/TheLocehiliosan/yadm
				synced 2025-06-13 13:03:58 +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:
		
							parent
							
								
									57866714c4
								
							
						
					
					
						commit
						b78bb1eef4
					
				| @ -10,7 +10,7 @@ function create_encrypt() { | ||||
|     echo "$efile" >> "$T_YADM_ENCRYPT" | ||||
|     echo "$efile" >> "$T_DIR_WORK/$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" | ||||
|   done | ||||
| } | ||||
|  | ||||
| @ -96,14 +96,16 @@ EOF | ||||
|       while IFS='' read -r glob || [ -n "$glob" ]; do | ||||
|         if [[ ! $glob =~ ^# && ! $glob =~ ^[[:space:]]*$ ]] ; then | ||||
|           local IFS=$'\n' | ||||
|           for matching_file in $(eval ls -d "$glob" 2>/dev/null); do | ||||
|             if [ -d "$matching_file" ]; then | ||||
|                 echo "$matching_file/" | ||||
|               for subfile in "$matching_file"/*; do | ||||
|                 echo "$subfile" | ||||
|               done | ||||
|             else | ||||
|               echo "$matching_file" | ||||
|           for matching_file in $glob; do | ||||
|             if [ -e "$matching_file" ]; then | ||||
|               if [ -d "$matching_file" ]; then | ||||
|                   echo "$matching_file/" | ||||
|                 for subfile in "$matching_file"/*; do | ||||
|                   echo "$subfile" | ||||
|                 done | ||||
|               else | ||||
|                 echo "$matching_file" | ||||
|               fi | ||||
|             fi | ||||
|           done | ||||
|         fi | ||||
| @ -297,7 +299,7 @@ EOF | ||||
|   #; add paths with spaces to YADM_ARCHIVE | ||||
|   local original_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 expect <<EOF | ||||
| @ -331,7 +333,7 @@ EOF | ||||
|   #; add directory paths to YADM_ARCHIVE | ||||
|   local original_encrypt | ||||
|   original_encrypt=$(cat "$T_YADM_ENCRYPT") | ||||
|   echo -e "'space test'" >> "$T_YADM_ENCRYPT" | ||||
|   echo -e "space test" >> "$T_YADM_ENCRYPT" | ||||
| 
 | ||||
|   #; run encrypt | ||||
|   run expect <<EOF | ||||
|  | ||||
							
								
								
									
										23
									
								
								yadm
									
									
									
									
									
								
							
							
						
						
									
										23
									
								
								yadm
									
									
									
									
									
								
							| @ -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 | ||||
|  | ||||
		Loading…
	
		Reference in New Issue
	
	Block a user