diff options
author | Denis Vlasenko | 2007-01-19 21:19:35 +0000 |
---|---|---|
committer | Denis Vlasenko | 2007-01-19 21:19:35 +0000 |
commit | 9af7c9d6b62ceb07a9ba24cee0cf4a08c689235e (patch) | |
tree | 69a650a8cd686f21087fc572a995420b6ac632cc /networking/telnetd.c | |
parent | f8c11aa65df2af4ab20c0effc42997bbd7357cc3 (diff) | |
download | busybox-9af7c9d6b62ceb07a9ba24cee0cf4a08c689235e.zip busybox-9af7c9d6b62ceb07a9ba24cee0cf4a08c689235e.tar.gz |
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 'networking/telnetd.c')
-rw-r--r-- | networking/telnetd.c | 12 |
1 files changed, 8 insertions, 4 deletions
diff --git a/networking/telnetd.c b/networking/telnetd.c index 51bd0c0..25cba3e 100644 --- a/networking/telnetd.c +++ b/networking/telnetd.c @@ -283,15 +283,19 @@ make_new_session( /* child */ + /* make new process group */ + setsid(); + tcsetpgrp(0, getpid()); + /* ^^^ strace says: "ioctl(0, TIOCSPGRP, [pid]) = -1 ENOTTY" -- ??! */ + /* open the child's side of the tty. */ - fd = xopen(tty_name, O_RDWR /*| O_NOCTTY*/); + /* NB: setsid() disconnects from any previous ctty's. Therefore + * we must open child's side of the tty AFTER setsid! */ + fd = xopen(tty_name, O_RDWR); /* becomes our ctty */ dup2(fd, 0); dup2(fd, 1); dup2(fd, 2); while (fd > 2) close(fd--); - /* make new process group */ - setsid(); - tcsetpgrp(0, getpid()); /* The pseudo-terminal allocated to the client is configured to operate in * cooked mode, and with XTABS CRMOD enabled (see tty(4)). */ |