projects
/
unix-history
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
tags
|
clone url
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
fix group initialization for eight character login names
[unix-history]
/
usr
/
src
/
usr.bin
/
login
/
login.c
diff --git
a/usr/src/usr.bin/login/login.c
b/usr/src/usr.bin/login/login.c
index
5cc8ce2
..
67385e8
100644
(file)
--- a/
usr/src/usr.bin/login/login.c
+++ b/
usr/src/usr.bin/login/login.c
@@
-1,4
+1,4
@@
-static char *sccsid = "@(#)login.c 4.1
5 82/03/27
";
+static char *sccsid = "@(#)login.c 4.1
7 82/05/19
";
/*
* login [ name ]
* login -r
/*
* login [ name ]
* login -r
@@
-73,6
+73,7
@@
struct ltchars ltc = {
int rflag;
char rusername[NMAX+1], lusername[NMAX+1];
char rpassword[NMAX+1];
int rflag;
char rusername[NMAX+1], lusername[NMAX+1];
char rpassword[NMAX+1];
+char name[NMAX+1];
char *rhost;
main(argc, argv)
char *rhost;
main(argc, argv)
@@
-111,7
+112,7
@@
char **argv;
printf("%s: No such user\r\n", lusername);
goto abnormal;
}
printf("%s: No such user\r\n", lusername);
goto abnormal;
}
- hostf =
fopen("/etc/hosts.equiv", "r")
;
+ hostf =
pwd->pw_uid ? fopen("/etc/hosts.equiv", "r") : 0
;
again:
if (hostf) {
char ahost[32];
again:
if (hostf) {
char ahost[32];
@@
-297,7
+298,9
@@
normal:
}
chown(ttyn, pwd->pw_uid, pwd->pw_gid);
setgid(pwd->pw_gid);
}
chown(ttyn, pwd->pw_uid, pwd->pw_gid);
setgid(pwd->pw_gid);
- inigrp(utmp.ut_name, pwd->pw_gid);
+ strncpy(name, utmp.ut_name, NMAX);
+ name[NMAX] = '\0';
+ inigrp(name, pwd->pw_gid);
setuid(pwd->pw_uid);
environ = envinit;
strncat(homedir, pwd->pw_dir, sizeof(homedir)-6);
setuid(pwd->pw_uid);
environ = envinit;
strncat(homedir, pwd->pw_dir, sizeof(homedir)-6);
@@
-337,19
+340,19
@@
normal:
int stopmotd;
catch()
{
int stopmotd;
catch()
{
+
signal(SIGINT, SIG_IGN);
stopmotd++;
}
signal(SIGINT, SIG_IGN);
stopmotd++;
}
-/*
- * return true if OK for root to login on this terminal
- */
rootterm(tty)
rootterm(tty)
- char
*tty;
+ char *tty;
{
register FILE *fd;
{
register FILE *fd;
- char
buf[100];
+ char buf[100];
+ if (rflag)
+ return(1);
if ((fd = fopen(securetty, "r")) == NULL)
return(1);
while (fgets(buf, sizeof buf, fd) != NULL) {
if ((fd = fopen(securetty, "r")) == NULL)
return(1);
while (fgets(buf, sizeof buf, fd) != NULL) {