start-stop-daemon: do try to close fds > 2
sh -c 'exec 3>&1; exec start-stop-daemon -S -b -x /bin/sleep -- 123' now closes fd 3. function old new delta bb_daemonize_or_rexec 183 192 +9 ------------------------------------------------------------------------------ (add/remove: 0/0 grow/shrink: 1/0 up/down: 9/0) Total: 9 bytes Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
This commit is contained in:
parent
13f4204561
commit
fa8878bf1f
@ -263,12 +263,6 @@ void FAST_FUNC bb_daemonize_or_rexec(int flags, char **argv)
|
|||||||
if (flags & DAEMON_CHDIR_ROOT)
|
if (flags & DAEMON_CHDIR_ROOT)
|
||||||
xchdir("/");
|
xchdir("/");
|
||||||
|
|
||||||
if (flags & DAEMON_DEVNULL_STDIO) {
|
|
||||||
close(0);
|
|
||||||
close(1);
|
|
||||||
close(2);
|
|
||||||
}
|
|
||||||
|
|
||||||
fd = open(bb_dev_null, O_RDWR);
|
fd = open(bb_dev_null, O_RDWR);
|
||||||
if (fd < 0) {
|
if (fd < 0) {
|
||||||
/* NB: we can be called as bb_sanitize_stdio() from init
|
/* NB: we can be called as bb_sanitize_stdio() from init
|
||||||
@ -278,8 +272,15 @@ void FAST_FUNC bb_daemonize_or_rexec(int flags, char **argv)
|
|||||||
fd = xopen("/", O_RDONLY); /* don't believe this can fail */
|
fd = xopen("/", O_RDONLY); /* don't believe this can fail */
|
||||||
}
|
}
|
||||||
|
|
||||||
while ((unsigned)fd < 2)
|
if (flags & DAEMON_DEVNULL_STDIO) {
|
||||||
fd = dup(fd); /* have 0,1,2 open at least to /dev/null */
|
xdup2(fd, 0);
|
||||||
|
xdup2(fd, 1);
|
||||||
|
xdup2(fd, 2);
|
||||||
|
} else {
|
||||||
|
/* have 0,1,2 open at least to /dev/null */
|
||||||
|
while ((unsigned)fd < 2)
|
||||||
|
fd = dup(fd);
|
||||||
|
}
|
||||||
|
|
||||||
if (!(flags & DAEMON_ONLY_SANITIZE)) {
|
if (!(flags & DAEMON_ONLY_SANITIZE)) {
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user