aboutsummaryrefslogtreecommitdiff
path: root/libbb
diff options
context:
space:
mode:
authorDenis Vlasenko <vda.linux@googlemail.com>2007-01-19 21:19:35 +0000
committerDenis Vlasenko <vda.linux@googlemail.com>2007-01-19 21:19:35 +0000
commit9af7c9d6b62ceb07a9ba24cee0cf4a08c689235e (patch)
tree69a650a8cd686f21087fc572a995420b6ac632cc /libbb
parentf8c11aa65df2af4ab20c0effc42997bbd7357cc3 (diff)
downloadbusybox-w32-9af7c9d6b62ceb07a9ba24cee0cf4a08c689235e.tar.gz
busybox-w32-9af7c9d6b62ceb07a9ba24cee0cf4a08c689235e.tar.bz2
busybox-w32-9af7c9d6b62ceb07a9ba24cee0cf4a08c689235e.zip
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();
Diffstat (limited to 'libbb')
-rw-r--r--libbb/vfork_daemon_rexec.c4
-rw-r--r--libbb/xfuncs.c12
2 files changed, 12 insertions, 4 deletions
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,
35 dup2(fd, STDIN_FILENO); 35 dup2(fd, STDIN_FILENO);
36 dup2(fd, STDOUT_FILENO); 36 dup2(fd, STDOUT_FILENO);
37 dup2(fd, STDERR_FILENO); 37 dup2(fd, STDERR_FILENO);
38 if (fd > 2) 38 while (fd > 2)
39 close(fd); 39 close(fd--);
40 } 40 }
41 41
42 vfork_args = xzalloc(sizeof(char *) * (argc + 3)); 42 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)
509} 509}
510#endif 510#endif
511 511
512void bb_sanitize_server_stdio(int daemonize) 512void bb_sanitize_stdio_maybe_daemonize(int daemonize)
513{ 513{
514 int fd; 514 int fd;
515 /* Mega-paranoid */ 515 /* Mega-paranoid */
@@ -523,8 +523,8 @@ void bb_sanitize_server_stdio(int daemonize)
523 if (pid) /* parent */ 523 if (pid) /* parent */
524 exit(0); 524 exit(0);
525 /* child */ 525 /* child */
526 setsid();
527 /* if daemonizing, make sure we detach from stdio */ 526 /* if daemonizing, make sure we detach from stdio */
527 setsid();
528 dup2(fd, 0); 528 dup2(fd, 0);
529 dup2(fd, 1); 529 dup2(fd, 1);
530 dup2(fd, 2); 530 dup2(fd, 2);
@@ -532,6 +532,14 @@ void bb_sanitize_server_stdio(int daemonize)
532 while (fd > 2) 532 while (fd > 2)
533 close(fd--); /* close everything after fd#2 */ 533 close(fd--); /* close everything after fd#2 */
534} 534}
535void bb_sanitize_stdio(void)
536{
537 bb_sanitize_stdio_maybe_daemonize(0);
538}
539void bb_daemonize(void)
540{
541 bb_sanitize_stdio_maybe_daemonize(1);
542}
535 543
536// Die with an error message if we can't open a new socket. 544// Die with an error message if we can't open a new socket.
537int xsocket(int domain, int type, int protocol) 545int xsocket(int domain, int type, int protocol)