. $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
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 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 /etc/passwd from unsafe
-test_unsafe //../etc/passwd from unsafe
-test_unsafe //./etc/passwd from unsafe
+test_unsafe .. from/file safe
+test_unsafe ../.. from/file unsafe
+test_unsafe dir/.. from safe
+test_unsafe dir/../.. 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 ../../unsafe/unsafefile `pwd`/from/safe safe
test_unsafe ../files/file1 `pwd`/from/safe safe
-
-# Test suspicious handling of '..' in srcdir
-test_unsafe ../../unsafe/unsafefile from/safe/../safe unsafe
-test_unsafe ../files/file1 from/safe/../safe safe
-