From 1054bb1e439e2491f4f9b8c02fb0c8bb8d185bd3 Mon Sep 17 00:00:00 2001 From: "Andrey A. Chernov" Date: Sat, 5 Jul 1997 19:36:55 +0000 Subject: [PATCH] 1. Replace malloc+bzero by calloc 2. Revoke internal active session list only now, not whole /etc/ttys --- sbin/init/init.c | 33 +++++---------------------------- 1 file changed, 5 insertions(+), 28 deletions(-) diff --git a/sbin/init/init.c b/sbin/init/init.c index ebc95a223cdc..e3913db0ba1e 100644 --- a/sbin/init/init.c +++ b/sbin/init/init.c @@ -33,7 +33,7 @@ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. * - * $Id: init.c,v 1.20 1997/07/03 11:37:43 ache Exp $ + * $Id: init.c,v 1.21 1997/07/04 22:09:07 ache Exp $ */ #ifndef lint @@ -936,8 +936,7 @@ new_session(sprev, session_index, typ) typ->ty_getty == 0) return 0; - sp = (session_t *) malloc(sizeof (session_t)); - bzero(sp, sizeof *sp); + sp = (session_t *) calloc(1, sizeof (session_t)); sp->se_index = session_index; @@ -1393,38 +1392,16 @@ death() register session_t *sp; register int i; pid_t pid; - char *devname; - int tlen_cur, tlen_max; - struct ttyent *typ; static const int death_sigs[2] = { SIGTERM, SIGKILL }; - for (sp = sessions; sp; sp = sp->se_next) + for (sp = sessions; sp; sp = sp->se_next) { sp->se_flags |= SE_SHUTDOWN; + (void) revoke(sp->se_device); + } /* NB: should send a message to the session logger to avoid blocking. */ logwtmp("~", "shutdown", ""); - tlen_max = 0; - devname = NULL; - while (typ = getttyent()) { - if (typ->ty_name != 0) { - tlen_cur = strlen(typ->ty_name); - if (tlen_cur > 0) { - if (tlen_cur > tlen_max) { - tlen_max = tlen_cur; - devname = realloc(devname, sizeof(_PATH_DEV) + tlen_max); - } - if (devname != NULL) { - (void) sprintf(devname, "%s%s", _PATH_DEV, typ->ty_name); - (void) revoke(devname); - } - } - } - } - endttyent(); - if (devname != NULL) - free(devname); - for (i = 0; i < 2; ++i) { if (kill(-1, death_sigs[i]) == -1 && errno == ESRCH) return (state_func_t) single_user;