From 5d2d59d9aafbc9705370f69df0a317a350d2cdf4 Mon Sep 17 00:00:00 2001 From: Guido van Rooij Date: Mon, 8 Aug 1994 17:14:46 +0000 Subject: [PATCH] 1. Correct invalid setsid and ioctl return value checks. 2. set some seteuid calls to allow sliplogin to be run by users from the commandline in stead of from login inlo. Submitted by: guido --- usr.sbin/sliplogin/sliplogin.c | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/usr.sbin/sliplogin/sliplogin.c b/usr.sbin/sliplogin/sliplogin.c index 7e52ff7a02d..d8af95958b4 100644 --- a/usr.sbin/sliplogin/sliplogin.c +++ b/usr.sbin/sliplogin/sliplogin.c @@ -208,6 +208,7 @@ hup_handler(s) { char logoutfile[MAXPATHLEN]; + seteuid(0); (void)sprintf(logoutfile, "%s.%s", _PATH_LOGOUT, loginname); if (access(logoutfile, R_OK|X_OK) != 0) (void)strcpy(logoutfile, _PATH_LOGOUT); @@ -256,7 +257,7 @@ main(argc, argv) #ifdef POSIX if (fork() > 0) exit(0); - if (setsid() != 0) + if (setsid() == -1) perror("setsid"); #else if ((fd = open("/dev/tty", O_RDONLY, 0)) >= 0) { @@ -281,7 +282,7 @@ main(argc, argv) close(fd); } #ifdef TIOCSCTTY - if (ioctl(0, TIOCSCTTY, (caddr_t)0) != 0) + if (ioctl(0, TIOCSCTTY, (caddr_t)0) == -1) perror("ioctl (TIOCSCTTY)"); #endif } else { @@ -373,6 +374,8 @@ main(argc, argv) exit(6); } + /* reset uid to users' to allow the user to give a signal. */ + seteuid(uid); /* twiddle thumbs until we get a signal */ while (1) sigpause(0);