blob: 61e0e24a851da8de693025250051cb9494297a21 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
|
#! /bin/sh
# Copyright (C) 2002 by Martin Pool
# Call directly into unsafe_symlink and test its handling of various filenames
. "$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
test_fail "t_unsafe $1 $2 returned \"$result\", expected \"$3\""
fi
}
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 ../../unsafe/unsafefile `pwd`/from/safe safe
test_unsafe ../files/file1 `pwd`/from/safe safe
|