Doc
[rsync/rsync.git] / testsuite / unsafe-byname.test
1 #! /bin/sh
2
3 # Copyright (C) 2002 by Martin Pool
4
5 # Call directly into unsafe_symlink and test its handling of various filenames
6
7 . $srcdir/testsuite/rsync.fns
8
9 test_unsafe() {
10     # $1 is the target of a symlink
11     # $2 is the directory we're copying
12     # $3 is the expected outcome: "safe" if the link lies within $2,
13     # or "unsafe" otherwise
14
15     result=`"$TOOLDIR/t_unsafe" "$1" "$2"` || test_fail "Failed to check $1 $2"
16     if [ "$result" != "$3" ]
17     then
18         test_fail "t_unsafe $1 $2 returned \"$result\", expected \"$3\""
19     fi
20 }
21
22 test_unsafe file                from                    safe
23 test_unsafe dir/file            from                    safe
24 test_unsafe dir/./file          from                    safe
25 test_unsafe dir/.               from safe
26 test_unsafe dir/                from safe
27
28 test_unsafe /etc/passwd         from unsafe
29 test_unsafe //../etc/passwd     from unsafe
30 test_unsafe //./etc/passwd      from unsafe
31
32 test_unsafe ./foo               from                    safe
33 test_unsafe ../foo              from                    unsafe
34 test_unsafe ../dest             from/dir                safe
35
36 test_unsafe ''                  from                    unsafe
37
38 # Based on tests from unsafe-links by VladimĂ­r Michl
39 test_unsafe ../../unsafe/unsafefile    from/safe        unsafe
40 test_unsafe ../files/file1             from/safe        safe
41
42 test_unsafe ../../unsafe/unsafefile    safe     unsafe
43 test_unsafe ../files/file1             safe     unsafe
44
45 test_unsafe ../../unsafe/unsafefile    `pwd`/from/safe  safe
46 test_unsafe ../files/file1             `pwd`/from/safe  safe
47
48 # I think these are correct, but I don't really understand the code.
49 # Waiting for an answer from dwd
50 test_skipped "correct behaviour is unclear"
51
52 # Test suspicious handling of '..' in srcdir
53 test_unsafe ../../unsafe/unsafefile    from/safe/../safe        unsafe
54 test_unsafe ../files/file1             from/safe/../safe        safe
55