Another xattr "internal abbrev" fix for an xattr object that is
[rsync/rsync.git] / testsuite / unsafe-byname.test
index 2c19972..61e0e24 100644 (file)
@@ -4,9 +4,14 @@
 
 # Call directly into unsafe_symlink and test its handling of various filenames
 
-. $srcdir/testsuite/rsync.fns
+. "$suitedir/rsync.fns"
 
 test_unsafe() {
+    # $1 is the target of a symlink
+    # $2 is the directory we're copying
+    # $3 is the expected outcome: "safe" if the link lies within $2,
+    # or "unsafe" otherwise
+
     result=`"$TOOLDIR/t_unsafe" "$1" "$2"` || test_fail "Failed to check $1 $2"
     if [ "$result" != "$3" ]
     then
@@ -14,7 +19,33 @@ test_unsafe() {
     fi
 }
 
-set -x
+test_unsafe file               from                    safe
+test_unsafe dir/file           from                    safe
+test_unsafe dir/./file         from                    safe
+test_unsafe dir/.              from                    safe
+test_unsafe dir/               from                    safe
+
+test_unsafe /etc/passwd                from                    unsafe
+test_unsafe //../etc/passwd    from                    unsafe
+test_unsafe //./etc/passwd     from                    unsafe
+
+test_unsafe ./foo              from                    safe
+test_unsafe ../foo             from                    unsafe
+test_unsafe ../dest            from/dir                safe
+
+test_unsafe ..                 from/file               safe
+test_unsafe ../..              from/file               unsafe
+test_unsafe dir/..             from                    safe
+test_unsafe dir/../..          from                    unsafe
+
+test_unsafe ''                  from                   unsafe
+
+# Based on tests from unsafe-links by VladimĂ­r Michl
+test_unsafe ../../unsafe/unsafefile    from/safe       unsafe
+test_unsafe ../files/file1            from/safe        safe
+
+test_unsafe ../../unsafe/unsafefile    safe    unsafe
+test_unsafe ../files/file1            safe     unsafe
 
-test_unsafe foo foo safe
-test_unsafe ../foo foo unsafe
+test_unsafe ../../unsafe/unsafefile    `pwd`/from/safe safe
+test_unsafe ../files/file1            `pwd`/from/safe  safe