summaryrefslogtreecommitdiff
path: root/shell/lash.c
diff options
context:
space:
mode:
authorEric Andersen2004-08-16 08:38:34 +0000
committerEric Andersen2004-08-16 08:38:34 +0000
commitacd647c8774a556d0df77e6779867f9fa069cd22 (patch)
treeff3b46509a10ed268c99c563bc7db45d6afc2169 /shell/lash.c
parent0722513497aac2836e9af79cde65705a61de8752 (diff)
downloadbusybox-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
Diffstat (limited to 'shell/lash.c')
-rw-r--r--shell/lash.c1
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);