diff options
author | Eric Andersen | 2004-08-16 08:38:34 +0000 |
---|---|---|
committer | Eric Andersen | 2004-08-16 08:38:34 +0000 |
commit | acd647c8774a556d0df77e6779867f9fa069cd22 (patch) | |
tree | ff3b46509a10ed268c99c563bc7db45d6afc2169 | |
parent | 0722513497aac2836e9af79cde65705a61de8752 (diff) | |
download | busybox-acd647c8774a556d0df77e6779867f9fa069cd22.zip busybox-acd647c8774a556d0df77e6779867f9fa069cd22.tar.gz |
Joe.C writes:
This bug is in busybox 1.0.0-rc2. When using lash exec
builtin with redirection, the opened file fd keep increasing.
For example, please try the following command with lash.
ls -al /proc/<lash pid>/fd
exec /bin/sh 2>/dev/null
ls -al /proc/<lash pid>/fd
The last 'ls' command output will look like this. The fd
number 4 shouldn't exist.
lrwx------ 1 501 100 64 Aug 13 13:56 4 -> /dev/pts/5
l-wx------ 1 501 100 64 Aug 13 13:56 2 -> /dev/null
lrwx------ 1 501 100 64 Aug 13 13:56 1 -> /dev/pts/5
lrwx------ 1 501 100 64 Aug 13 13:56 0 -> /dev/pts/5
dr-xr-xr-x 3 501 100 0 Aug 13 13:56 ..
dr-x------ 2 501 100 0 Aug 13 13:56 .
This one-line patch fix this problem by setting CLOEXEC flag for
squirrel fd. Please apply.
Joe.C
-rw-r--r-- | shell/lash.c | 1 |
1 files changed, 1 insertions, 0 deletions
diff --git a/shell/lash.c b/shell/lash.c index fa416c7..f454e69 100644 --- a/shell/lash.c +++ b/shell/lash.c @@ -656,6 +656,7 @@ static int setup_redirects(struct child_prog *prog, int squirrel[]) if (openfd != redir->fd) { if (squirrel && redir->fd < 3) { squirrel[redir->fd] = dup(redir->fd); + fcntl (squirrel[redir->fd], F_SETFD, FD_CLOEXEC); } dup2(openfd, redir->fd); close(openfd); |