diff options
author | jmallett <jmallett@FreeBSD.org> | 2002-05-27 08:10:24 +0000 |
---|---|---|
committer | jmallett <jmallett@FreeBSD.org> | 2002-05-27 08:10:24 +0000 |
commit | afc38d0730cc1ba87365292cf6507420b200ea4e (patch) | |
tree | bd91e7432994f354f0d2f4a03c43978d771aecec /contrib/telnet/telnetd | |
parent | 36a7d4b91404b3e0174fbde050a5e26230c971d7 (diff) | |
download | FreeBSD-src-afc38d0730cc1ba87365292cf6507420b200ea4e.zip FreeBSD-src-afc38d0730cc1ba87365292cf6507420b200ea4e.tar.gz |
Don't risk catching a signal while handling a signal for a dying child, as we
can then end up not properly clearing wtmp/utmp entries.
PR: bin/37934
Submitted by: Sandeep Kumar <skumar@juniper.net>
Reviewed by: markm
MFC after: 2 weeks
Diffstat (limited to 'contrib/telnet/telnetd')
-rw-r--r-- | contrib/telnet/telnetd/sys_term.c | 8 |
1 files changed, 8 insertions, 0 deletions
diff --git a/contrib/telnet/telnetd/sys_term.c b/contrib/telnet/telnetd/sys_term.c index 419f4fb..1e832e3 100644 --- a/contrib/telnet/telnetd/sys_term.c +++ b/contrib/telnet/telnetd/sys_term.c @@ -1317,8 +1317,16 @@ void cleanup(int sig __unused) { char *p; + sigset_t mask; p = line + sizeof(_PATH_DEV) - 1; + /* + * Block all signals before clearing the utmp entry. We don't want to + * be called again after calling logout() and then not add the wtmp + * entry because of not finding the corresponding entry in utmp. + */ + sigfillset(&mask); + sigprocmask(SIG_SETMASK, &mask, NULL); if (logout(p)) logwtmp(p, "", ""); (void)chmod(line, 0666); |