ash: fix open fds leaking in redirects. Closes 9561
[oweals/busybox.git] / shell / hush_test / hush-redir / redir_script.tests
1 # Builds a " 3>&- 4>&-" string.
2 # Note: one of these fds is a directory opened to /proc/self/fd
3 # for globbing. It is unwanted, but I don't know how to filter it out.
4 find_fds() {
5         fds=""
6         for f in /proc/self/fd/*; do
7                 test "$f" = "/proc/self/fd/0" && continue
8                 test "$f" = "/proc/self/fd/1" && continue
9                 test "$f" = "/proc/self/fd/2" && continue
10                 fds="$fds ${f##*/}>&-"
11         done
12 }
13
14 find_fds
15 fds1="$fds"
16
17 # One of the fds is open to the script body
18 # Close it while executing something.
19 eval "find_fds $fds"
20
21 # Shell should not lose that fd. Did it?
22 find_fds
23 test x"$fds1" = x"$fds" && { echo "Ok: script fd is not closed"; exit 0; }
24
25 echo "Bug: script fd is closed"
26 echo "fds1:$fds1"
27 echo "fds2:$fds"
28 exit 1
29