~ubuntu-branches/ubuntu/trusty/bash/trusty-security

« back to all changes in this revision

Viewing changes to tests/execscript

  • Committer: Package Import Robot
  • Author(s): Matthias Klose
  • Date: 2014-03-03 22:52:05 UTC
  • mfrom: (1.3.5) (2.2.6 experimental)
  • Revision ID: package-import@ubuntu.com-20140303225205-87ltrt5kspeq0g1b
Tags: 4.3-1ubuntu1
* Merge with Debian; remaining changes:
  - skel.bashrc:
    - Run lesspipe.
    - Enable ls aliases.
    - Set options in ll alias to -alF.
    - Define an alert alias.
    - Enabled colored grep aliases.
  - etc.bash.bashrc:
    - Add sudo hint.

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
export LC_ALL=C
 
2
export LANG=C
 
3
 
 
4
if [ $UID -eq 0 ]; then
 
5
        echo "execscript: the test suite should not be run as root" >&2
 
6
fi
 
7
 
 
8
set -- one two three
 
9
echo before exec1.sub: "$@"
 
10
echo calling exec1.sub
 
11
./exec1.sub aa bb cc dd ee
 
12
echo after exec1.sub with args: $?
 
13
./exec1.sub
 
14
echo after exec1.sub without args: $?
 
15
echo after exec1.sub: "$@"
 
16
 
 
17
# set up a fixed path so we know notthere will not be found
 
18
PATH=/usr/bin:/bin:/usr/local/bin:
 
19
export PATH
 
20
 
 
21
notthere
 
22
echo $?
 
23
 
 
24
# this is iffy, since the error messages may vary from system to system
 
25
# and /tmp might not exist
 
26
ln -s ${THIS_SH} /tmp/bash 2>/dev/null
 
27
if [ -f /tmp/bash ]; then
 
28
        /tmp/bash notthere
 
29
else
 
30
        ${THIS_SH} notthere
 
31
fi
 
32
echo $?
 
33
rm -f /tmp/bash
 
34
 
 
35
# /bin/sh should be there on all systems
 
36
${THIS_SH} /bin/sh
 
37
echo $?
 
38
 
 
39
# try executing a directory
 
40
/
 
41
echo $?
 
42
 
 
43
${THIS_SH} /
 
44
echo $?
 
45
 
 
46
# try sourcing a directory
 
47
. /
 
48
echo $?
 
49
 
 
50
# try sourcing a binary file -- post-2.04 versions don't do the binary file
 
51
# check, and will probably fail with `command not found', or status 127
 
52
# bash-4.1 and later check for 256 NUL characters and fail as binary files
 
53
# if there are more than that, it's probably binary
 
54
. ${THIS_SH} 2>/dev/null
 
55
echo $?
 
56
 
 
57
# post-bash-2.05 versions allow sourcing non-regular files
 
58
. /dev/null
 
59
echo $?
 
60
 
 
61
# kill two birds with one test -- test out the BASH_ENV code
 
62
echo echo this is bashenv > /tmp/bashenv
 
63
export BASH_ENV=/tmp/bashenv
 
64
${THIS_SH} ./exec3.sub
 
65
rm -f /tmp/bashenv
 
66
unset BASH_ENV
 
67
 
 
68
# we're resetting the $PATH to empty, so this should be last
 
69
PATH=
 
70
 
 
71
notthere
 
72
echo $?
 
73
 
 
74
command notthere
 
75
echo $?
 
76
 
 
77
command -p notthere
 
78
echo $?
 
79
 
 
80
# but -p should guarantee that we find all the standard utilities, even
 
81
# with an empty or unset $PATH
 
82
command -p sh -c 'echo this is $0'
 
83
unset PATH
 
84
command -p sh -c 'echo this is $0'
 
85
 
 
86
# a bug in bash before bash-2.01 caused PATH to be set to the empty string
 
87
# when command -p was run with PATH unset
 
88
echo ${PATH-unset}
 
89
 
 
90
echo "echo ok" | ${THIS_SH} -t
 
91
 
 
92
${THIS_SH} ./exec2.sub
 
93
echo $?
 
94
 
 
95
${THIS_SH} ./exec4.sub
 
96
 
 
97
# try exec'ing a command that cannot be found in $PATH
 
98
${THIS_SH} ./exec5.sub
 
99
 
 
100
# this was a bug in bash versions before bash-2.04
 
101
${THIS_SH} -c 'cat </dev/null | cat >/dev/null' >&-
 
102
 
 
103
# checks for proper return values in subshell commands with inverted return
 
104
# values
 
105
 
 
106
${THIS_SH} ./exec6.sub
 
107
 
 
108
# checks for properly deciding what constitutes an executable file
 
109
${THIS_SH} ./exec7.sub
 
110
 
 
111
${THIS_SH} -i ./exec8.sub
 
112
 
 
113
${THIS_SH} ./exec9.sub
 
114
 
 
115
true | `echo true` &
 
116
 
 
117
echo after
 
118
 
 
119
# Problem with bash at least back to version 3.0
 
120
${THIS_SH} -c 'VAR=0; VAR=1 command exec; exit ${VAR}'
 
121
 
 
122
# problem with bash through bash-4.1
 
123
(
 
124
        exec /var/empty/nosuch
 
125
        echo bad
 
126
) 2>/dev/null
 
127
[ $? = 127 ] || echo FAIL: bad exit status $? at $LINENO