diff options
author | Benjamin Barenblat <bbaren@debian.org> | 2020-10-15 22:09:17 -0400 |
---|---|---|
committer | Benjamin Barenblat <bbaren@debian.org> | 2020-10-15 22:09:17 -0400 |
commit | 9d6c51fe4a28848e7ad15afe4a67f8a90972e1d6 (patch) | |
tree | ca5049dda6ef6403b3a65639d778b851f8c712cd /bin/mkrc.in | |
parent | acec007c0b568de0f62893c03e6a0b46236c46a6 (diff) | |
parent | b9123ffae961bdb1a0e9c9a64c57ebd3d15c4ebf (diff) |
Merge 1.3.4
Diffstat (limited to 'bin/mkrc.in')
-rwxr-xr-x | bin/mkrc.in | 25 |
1 files changed, 24 insertions, 1 deletions
diff --git a/bin/mkrc.in b/bin/mkrc.in index 5d6af7e..5628f14 100755 --- a/bin/mkrc.in +++ b/bin/mkrc.in @@ -20,6 +20,28 @@ destination() { fi } +exit_if_dangerous() { + local file="$1" + + if [ -L "$file" ]; then + $ERROR 1 "'$file' is a symlink. Cannot process file." + elif is_nested "$file"; then + # Remove DEST_DIR in case $HOME is under a symlink + saved_ifs="$IFS" + IFS=/ + set -- $(dirname "$file" | sed "s|$DEST_DIR/||") + IFS="$saved_ifs" + + built_dir="$DEST_DIR" + for dir in $@; do + built_dir="$built_dir/$dir" + if [ -L "$built_dir" ]; then + $ERROR 1 "'$file' path contains a symlink ($dir). Cannot process file." + fi + done + fi +} + show_help() { local exit_code=${1:-0} @@ -64,7 +86,7 @@ while getopts :ChSsUuVvqot:d:B: opt; do B) in_host=1 hostname="$OPTARG" - install_args="-B $hostname" + install_args=$(append_variable "$install_args" "-B $hostname") ;; ?) show_help 64 ;; esac @@ -84,6 +106,7 @@ fi files="" for i; do + exit_if_dangerous "$i" files="$(printf "$files\n$i")" done |