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
This commit is contained in:
parent
0722513497
commit
acd647c877
@ -656,6 +656,7 @@ static int setup_redirects(struct child_prog *prog, int squirrel[])
|
|||||||
if (openfd != redir->fd) {
|
if (openfd != redir->fd) {
|
||||||
if (squirrel && redir->fd < 3) {
|
if (squirrel && redir->fd < 3) {
|
||||||
squirrel[redir->fd] = dup(redir->fd);
|
squirrel[redir->fd] = dup(redir->fd);
|
||||||
|
fcntl (squirrel[redir->fd], F_SETFD, FD_CLOEXEC);
|
||||||
}
|
}
|
||||||
dup2(openfd, redir->fd);
|
dup2(openfd, redir->fd);
|
||||||
close(openfd);
|
close(openfd);
|
||||||
|
Loading…
Reference in New Issue
Block a user