From 7101c9124c81ab0c4a1d93a02372a2bed8701f19 Mon Sep 17 00:00:00 2001 From: vda Date: Fri, 19 Jan 2007 21:19:35 +0000 Subject: openvt,getty,vfork_daemon_rexec,mount: tighten up fd cleanup code (will close all fd's > 2 on daemonization now) getty: fix "getty -" support, and also do not try to chown/chmod "-" telnetd: fix "lost ctty" bug Yet another attempt on saner function names: bb_sanitize_server_stdio(0/1) -> bb_sanitize_stdio() + bb_daemonize(); git-svn-id: svn://busybox.net/trunk/busybox@17390 69ca8d6d-28ef-0310-b511-8ec308f3f277 --- libbb/vfork_daemon_rexec.c | 4 ++-- libbb/xfuncs.c | 12 ++++++++++-- 2 files changed, 12 insertions(+), 4 deletions(-) (limited to 'libbb') diff --git a/libbb/vfork_daemon_rexec.c b/libbb/vfork_daemon_rexec.c index 81ae12687..26d1826e0 100644 --- a/libbb/vfork_daemon_rexec.c +++ b/libbb/vfork_daemon_rexec.c @@ -35,8 +35,8 @@ void vfork_daemon_rexec(int nochdir, int noclose, dup2(fd, STDIN_FILENO); dup2(fd, STDOUT_FILENO); dup2(fd, STDERR_FILENO); - if (fd > 2) - close(fd); + while (fd > 2) + close(fd--); } vfork_args = xzalloc(sizeof(char *) * (argc + 3)); diff --git a/libbb/xfuncs.c b/libbb/xfuncs.c index 84d47414a..dc160bf5c 100644 --- a/libbb/xfuncs.c +++ b/libbb/xfuncs.c @@ -509,7 +509,7 @@ void xdaemon(int nochdir, int noclose) } #endif -void bb_sanitize_server_stdio(int daemonize) +void bb_sanitize_stdio_maybe_daemonize(int daemonize) { int fd; /* Mega-paranoid */ @@ -523,8 +523,8 @@ void bb_sanitize_server_stdio(int daemonize) if (pid) /* parent */ exit(0); /* child */ - setsid(); /* if daemonizing, make sure we detach from stdio */ + setsid(); dup2(fd, 0); dup2(fd, 1); dup2(fd, 2); @@ -532,6 +532,14 @@ void bb_sanitize_server_stdio(int daemonize) while (fd > 2) close(fd--); /* close everything after fd#2 */ } +void bb_sanitize_stdio(void) +{ + bb_sanitize_stdio_maybe_daemonize(0); +} +void bb_daemonize(void) +{ + bb_sanitize_stdio_maybe_daemonize(1); +} // Die with an error message if we can't open a new socket. int xsocket(int domain, int type, int protocol) -- cgit v1.2.3-55-g6feb