diff options
author | Denys Vlasenko | 2017-01-07 10:15:01 +0100 |
---|---|---|
committer | Denys Vlasenko | 2017-01-07 10:16:56 +0100 |
commit | 86584e134eec1a81298149f8c04c77727f6dccb9 (patch) | |
tree | 6e3323d82c8dc1c2c7da58fa86573ca1cea33e71 /shell/hush_test/hush-redir | |
parent | fe93624fb69e3858ebaea2d9e53e0522c1025698 (diff) | |
download | busybox-86584e134eec1a81298149f8c04c77727f6dccb9.zip busybox-86584e134eec1a81298149f8c04c77727f6dccb9.tar.gz |
ash: fix open fds leaking in redirects. Closes 9561
commit e19923f6652a638ac39c84012e97f52cf5a7568e deleted clearredir()
call in shellexec():
ash: [REDIR] Remove redundant CLOEXEC calls
Upstream commit:
Now that we're marking file descriptors as CLOEXEC in savefd, we no longer
need to close them on exec or in setinputfd.
but it missed one place where we don't set CLOEXEC. Fixing this.
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
Diffstat (limited to 'shell/hush_test/hush-redir')
-rw-r--r-- | shell/hush_test/hush-redir/redir_leak.right | 6 | ||||
-rwxr-xr-x | shell/hush_test/hush-redir/redir_leak.tests | 10 |
2 files changed, 16 insertions, 0 deletions
diff --git a/shell/hush_test/hush-redir/redir_leak.right b/shell/hush_test/hush-redir/redir_leak.right new file mode 100644 index 0000000..b1c4829 --- /dev/null +++ b/shell/hush_test/hush-redir/redir_leak.right @@ -0,0 +1,6 @@ +4 +4 +4 +4 +4 +4 diff --git a/shell/hush_test/hush-redir/redir_leak.tests b/shell/hush_test/hush-redir/redir_leak.tests new file mode 100755 index 0000000..c8a9c63 --- /dev/null +++ b/shell/hush_test/hush-redir/redir_leak.tests @@ -0,0 +1,10 @@ +# Each of these should show only four lines: +# fds 0,1,2 are stdio; fd 3 is open by opendir() in ls. +# This test detects bugs where redirects leave stray open fds. + +ls -1 /proc/self/fd | wc -l +ls -1 /proc/self/fd >/proc/self/fd/1 | wc -l +ls -1 /proc/self/fd >/proc/self/fd/1 2>&1 | wc -l +echo "`ls -1 /proc/self/fd `" | wc -l +echo "`ls -1 /proc/self/fd >/proc/self/fd/1 `" | wc -l +echo "`ls -1 /proc/self/fd >/proc/self/fd/1 2>&1 `" | wc -l |