--- /usr/local/src/elkscmd/sys_utils/login.c Thu Aug 26 13:05:54 1999 +++ Develop/elkscmd/sys_utils/login.c Mon Dec 6 19:01:31 1999 @@ -98,9 +98,8 @@ struct utmp entry; struct utmp * entryp; struct utmp newentry; - char lbuf[UT_NAMESIZE], pbuf[20], salt[3]; - char * tty_name; - int n; + char lbuf[UT_NAMESIZE], *pswd, salt[3]; + char *tty_name, *p; for (;;) { @@ -109,10 +108,8 @@ if (read(STDIN_FILENO, lbuf, sizeof(lbuf)) < 1) { exit(1); } - n = strlen(lbuf)-1; - if (lbuf[n] == '\n') { - lbuf[n] = 0; - } + p = strchr(lbuf, '\n'); + if(p) *p = 0; } else { strncpy(lbuf, argv[1], UT_NAMESIZE); lbuf[UT_NAMESIZE - 1] = '\0'; @@ -144,19 +141,15 @@ if ((pwd != NULL) && (pwd->pw_passwd[0] == 0)) { login(pwd, entryp); } - write(STDOUT_FILENO,"Password: ",10); - if (read(STDIN_FILENO, pbuf, sizeof(pbuf)) < 1) { - exit(1); - } - n = strlen(pbuf)-1; - if (pbuf[n] == '\n') { - pbuf[n] = 0; - } + pswd = getpass("Password: "); + write(STDOUT_FILENO,"\n",1); + p = strchr(lbuf, '\n'); + if(p) *p = 0; if (pwd != NULL) { salt[0]=pwd->pw_passwd[0]; salt[1]=pwd->pw_passwd[1]; salt[2]=0; - if (!strcmp(crypt(pbuf,salt),pwd->pw_passwd)) { + if (!strcmp(crypt(pswd,salt),pwd->pw_passwd)) { login(pwd, entryp); } }