liyujie
2025-08-28 786ff4f4ca2374bdd9177f2e24b503d43e7a3b93
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
52
53
54
55
56
57
58
59
#!/bin/sh
#       $OpenBSD: scp-ssh-wrapper.sh,v 1.3 2014/01/26 10:49:17 djm Exp $
#       Placed in the Public Domain.
 
printname () {
   NAME=$1
   save_IFS=$IFS
   IFS=/
   set -- `echo "$NAME"`
   IFS="$save_IFS"
   while [ $# -ge 1 ] ; do
       if [ "x$1" != "x" ]; then
           echo "D0755 0 $1"
       fi
       shift;
   done
}
 
# Discard all but last argument.  We use arg later.
while test "x$1" != "x"; do
   arg="$1"
   shift
done
 
BAD="../../../../../../../../../../../../../${DIR}/dotpathdir"
 
case "$SCPTESTMODE" in
badserver_0)
   echo "D0755 0 /${DIR}/rootpathdir"
   echo "C755 2 rootpathfile"
   echo "X"
   ;;
badserver_1)
   echo "D0755 0 $BAD"
   echo "C755 2 file"
   echo "X"
   ;;
badserver_2)
   echo "D0755 0 $BAD"
   echo "C755 2 file"
   echo "X"
   ;;
badserver_3)
   printname $BAD
   echo "C755 2 file"
   echo "X"
   ;;
badserver_4)
   printname $BAD
   echo "D0755 0 .."
   echo "C755 2 file"
   echo "X"
   ;;
*)
   set -- $arg
   shift
   exec $SCP "$@"
   ;;
esac