Doc
[rsync/rsync.git] / testsuite / unsafe-byname.test
index 2c19972..47809dc 100644 (file)
@@ -7,6 +7,11 @@
 . $srcdir/testsuite/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,37 @@ 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                   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 ../../unsafe/unsafefile    `pwd`/from/safe safe
+test_unsafe ../files/file1            `pwd`/from/safe  safe
+
+# I think these are correct, but I don't really understand the code.
+# Waiting for an answer from dwd
+test_skipped "correct behaviour is unclear"
+
+# Test suspicious handling of '..' in srcdir
+test_unsafe ../../unsafe/unsafefile    from/safe/../safe       unsafe
+test_unsafe ../files/file1            from/safe/../safe        safe
 
-test_unsafe foo foo safe
-test_unsafe ../foo foo unsafe