]> granicus.if.org Git - sudo/commitdiff
Delete any pwstars we wrote after the user hits return. That way
authorTodd C. Miller <Todd.Miller@courtesan.com>
Mon, 9 Feb 2009 12:59:39 +0000 (12:59 +0000)
committerTodd C. Miller <Todd.Miller@courtesan.com>
Mon, 9 Feb 2009 12:59:39 +0000 (12:59 +0000)
there is no record on screen as to the user's password length.

tgetpass.c

index 9bc68b7a79248b2f52d304fef22ffd2d8771077e..31336439f346f2c871d91081347fddee0475e5e6 100644 (file)
@@ -214,11 +214,11 @@ sudo_askpass(prompt)
 extern int term_erase, term_kill;
 
 static char *
-getln(fd, buf, bufsiz, stars)
+getln(fd, buf, bufsiz, feedback)
     int fd;
     char *buf;
     size_t bufsiz;
-    int stars;
+    int feedback;
 {
     size_t left = bufsiz;
     ssize_t nr = -1;
@@ -234,7 +234,7 @@ getln(fd, buf, bufsiz, stars)
        nr = read(fd, &c, 1);
        if (nr != 1 || c == '\n' || c == '\r')
            break;
-       if (stars) {
+       if (feedback) {
            if (c == term_kill) {
                while (cp > buf) {
                    (void) write(fd, "\b \b", 3);
@@ -255,6 +255,13 @@ getln(fd, buf, bufsiz, stars)
        *cp++ = c;
     }
     *cp = '\0';
+    if (feedback) {
+       /* erase stars */
+       while (cp > buf) {
+           (void) write(fd, "\b \b", 3);
+           --cp;
+       }
+    }
 
     return(nr == 1 ? buf : NULL);
 }