3 # Copyright (C) 2002 by Martin Pool
5 # Call directly into unsafe_symlink and test its handling of various filenames
7 .
"$suitedir/rsync.fns"
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
15 result
=`"$TOOLDIR/t_unsafe" "$1" "$2"` || test_fail
"Failed to check $1 $2"
16 if [ "$result" != "$3" ]
18 test_fail
"t_unsafe $1 $2 returned \"$result\", expected \"$3\""
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
28 test_unsafe
/etc
/passwd from unsafe
29 test_unsafe
//..
/etc
/passwd from unsafe
30 test_unsafe
//.
/etc
/passwd from unsafe
32 test_unsafe .
/foo from safe
33 test_unsafe ..
/foo from unsafe
34 test_unsafe .
/..
/foo from unsafe
35 test_unsafe .
//..
/foo from unsafe
36 test_unsafe .
/..
/foo from
/.. unsafe
37 test_unsafe ..
/dest from
/dir safe
38 test_unsafe ..
/..
/dest from
//dir unsafe
39 test_unsafe ..
//..
/dest from
/dir unsafe
41 test_unsafe .. from
/file safe
42 test_unsafe ..
/.. from
/file unsafe
43 test_unsafe ..
//.. from
//file unsafe
44 test_unsafe dir
/.. from safe
45 test_unsafe dir
/..
/.. from unsafe
46 test_unsafe dir
/..
//.. from unsafe
48 test_unsafe
'' from unsafe
50 # Based on tests from unsafe-links by VladimĂr Michl
51 test_unsafe ..
/..
/unsafe
/unsafefile from
/safe unsafe
52 test_unsafe ..
//..
/unsafe
/unsafefile from
/safe unsafe
53 test_unsafe ..
/files
/file1 from
/safe safe
55 test_unsafe ..
/..
/unsafe
/unsafefile safe unsafe
56 test_unsafe ..
/files
/file1 safe unsafe
58 test_unsafe ..
/..
/unsafe
/unsafefile
`pwd`/from
/safe safe
59 test_unsafe ..
/files
/file1
`pwd`/from
/safe safe