1load_lib "lrzsz.exp"
2if $tracelevel then {
3    strace $tracelevel
4}
5
6# i would really like to throw that code out of zmodem ...
7# but then again: somebody might need it, and it's disabled by default.
8# so check first: is it _really_ disabled?
9
10#puts RES=[getenv ZMODEM_RESTRICTED]
11if {[string compare [getenv ZMODEM_RESTRICTED] ""] != 0} {
12	unsetenv ZMODEM_RESTRICTED
13}
14
15proc runcommand { name sz szopts rz rzopts expect_fail} {
16	global MYTEMP
17	global testdir
18	set magic XXXYYYZZZ
19	verbose "Testing $name" 1
20	catch "exec rm -f $testdir/command_tmp"
21	set fails [runthem_internal "$name" "$sz" "$szopts" "$rz" "$rzopts"  \
22	"\\\"echo $magic \\>$testdir/command_tmp\\\"" "mkdir,rmdir" dummy]
23	if {[file exists  $testdir/command_tmp] == 0} {
24		set fails 1;
25	}
26	if {$fails == 0} {
27		catch "set dummy [grep $testdir/command_tmp $magic]"
28		if [string compare $magic $dummy] {
29			incr fails
30			send_log "grep fetch not $magic\n";
31		}
32	} else {
33		send_log "call failed\n";
34	}
35	if [string compare $expect_fail "OK"] {
36		if {$fails > 0} {
37			set fails 0;
38		} else {
39			set fails 1;
40		}
41	}
42	if {$fails == 0} {
43		pass "$name"
44	} else {
45		fail "$name"
46	}
47}
48
49runcommand command-disabled $objdir/../src/lsz "-q -c" \
50    "$objdir/../src/lrz" "" FAIL
51runcommand command-enabled-restricted $objdir/../src/lsz "-q -c" \
52    "$objdir/../src/lrz" "-C" FAIL
53runcommand command-enabled-unrestricted $objdir/../src/lsz "-q -c" \
54    "$objdir/../src/lrz" "--unrestrict --allow-commands" OK
55# same for -i
56runcommand i-command-disabled $objdir/../src/lsz "-q -i" \
57    "$objdir/../src/lrz" "" FAIL
58runcommand i-command-enabled-restricted $objdir/../src/lsz "-q -i" \
59    "$objdir/../src/lrz" "-C" FAIL
60runcommand i-command-enabled-unrestricted $objdir/../src/lsz "-q -i" \
61    "$objdir/../src/lrz" "--unrestrict --allow-commands" OK
62
63# basic tests done
64
65#set and unset ZMODEM_RESTRICTED. Should work.
66runcommand command-restricted-by-env "$objdir/../src/lsz" "-q -c" \
67    "env ZMODEM_RESTRICTED=1 sh -c '$objdir/../src/lrz -qUC'" "" OK
68#    "strace -vfs 128 -o /tmp/o2 env ZMODEM_RESTRICTED=1 sh -c \"$objdir/../src/lrz -qUC\"" "" OK
69# must not work.
70runcommand command-rbash-receiver "$objdir/../src/lsz" "-q -c" \
71    "env SHELL=rbash sh -c '$objdir/../src/lrz -qUC'" "" FAIL
72# must not work.
73runcommand command-rbash-sender "env SHELL=rbash sh -c '$objdir/../src/lsz -qc'" "" \
74    "$objdir/../src/lrz" "-qUC" FAIL
75
76