--- /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);
                        }
                }

Reply via email to