From 6b94bc7e0e8845ea8fa82a3cfc344d8d062f4f24 Mon Sep 17 00:00:00 2001 From: Kurt Zeilenga Date: Fri, 4 Jun 1999 02:05:10 +0000 Subject: [PATCH] use getpass() instead of mygetpass(). getpass() is implemented in -llutil (if needed). --- clients/ud/auth.c | 2 +- clients/ud/ud.h | 1 - clients/ud/util.c | 120 ---------------------------------------------- 3 files changed, 1 insertion(+), 122 deletions(-) diff --git a/clients/ud/auth.c b/clients/ud/auth.c index 4174a396a1..560c702af4 100644 --- a/clients/ud/auth.c +++ b/clients/ud/auth.c @@ -236,7 +236,7 @@ auth( char *who, int implicit ) authmethod = LDAP_AUTH_SIMPLE; sprintf(prompt, " Enter your LDAP password: "); do { - passwd = mygetpass(prompt); + passwd = getpass(prompt); } while (passwd != NULL && *passwd == '\0'); if (passwd == NULL) { (void) ldap_value_free(rdns); diff --git a/clients/ud/ud.h b/clients/ud/ud.h index 4de87a0116..3dd04bbc37 100644 --- a/clients/ud/ud.h +++ b/clients/ud/ud.h @@ -278,7 +278,6 @@ void ka_StringToKey LDAP_P(( char *str, char *cell, des_cblock *key )); #endif /* in util.c: */ -char *mygetpass LDAP_P(( char *prompt )); void printbase LDAP_P(( char *lead, char *s )); void fetch_buffer LDAP_P(( char *buffer, int length, FILE *where )); void fatal LDAP_P(( char *s )); diff --git a/clients/ud/util.c b/clients/ud/util.c index e2ab119150..1d0db263fa 100644 --- a/clients/ud/util.c +++ b/clients/ud/util.c @@ -24,132 +24,12 @@ #include #include -#ifdef HAVE_FCNTL_H -#include -#endif - -#ifdef HAVE_CONIO_H -#include -#endif - #include #include #include #include "ud.h" -char * -mygetpass( char *prompt ) -{ -#if !defined(HAVE_POSIX_TERMIOS) && !defined(HAVE_SGTTY_H) - static char buf[256]; - int i, c; - -#ifdef DEBUG - if (debug & D_TRACE) - printf("->mygetpass(%s)\n", prompt); -#endif - printf("%s", prompt); - i = 0; - while ( (c = getch()) != EOF && c != '\n' && c != '\r' ) - buf[i++] = c; - if ( c == EOF ) - return( NULL ); - buf[i] = '\0'; - return (buf); -#else - int no_pass = 0; - char i, j, k; - TERMIO_TYPE ttyb; - TERMFLAG_TYPE flags; - static char pbuf[513]; - register char *p; - register int c; - FILE *fi; - RETSIGTYPE (*sig)( int sig ); - -#ifdef DEBUG - if (debug & D_TRACE) - printf("->mygetpass(%s)\n", prompt); -#endif - /* - * Stolen from the getpass() routine. Can't use the plain - * getpass() for two reasons. One is that LDAP passwords - * can be really, really long - much longer than 8 chars. - * The second is that we like to make this client available - * out of inetd via a Merit asynch port, and we need to be - * able to do telnet control codes to turn on and off line - * blanking. - */ - if ((fi = fdopen(open("/dev/tty", 2), "r")) == NULL) - fi = stdin; - else - setbuf(fi, (char *)NULL); - sig = SIGNAL (SIGINT, SIG_IGN); - if (fi != stdin) { - if (GETATTR(fileno(fi), &ttyb) < 0) - perror("GETATTR"); - } - flags = GETFLAGS( ttyb ); - SETFLAGS( ttyb, flags & ~ECHO ); - if (fi != stdin) { - if (SETATTR(fileno(fi), &ttyb) < 0) - perror("SETATTR"); - } - - /* blank the line if through Merit */ - if (fi == stdin) { - printf("%c%c%c", 255, 251, 1); - fflush(stdout); - (void) scanf("%c%c%c", &i, &j, &k); - fflush(stdin); - } - - /* fetch the password */ - fprintf(stdout, "%s", prompt); - fflush(stdout); - for (p=pbuf; (c = getc(fi))!='\n' && c!=EOF;) { - if (c == '\r') - break; - if (p < &pbuf[512]) - *p++ = c; - } - if (c == EOF) - no_pass = 1; - else { - *p = '\0'; - if (*(p - 1) == '\r') - *(p - 1) = '\0'; - } - - /* unblank the line if through Merit */ - if (fi == stdin) { - printf("%c%c%c", 255, 252, 1); - fflush(stdout); - (void) scanf("%c%c%c", &i, &j, &k); - fflush(stdin); - printf("\n"); fflush(stdout); - } - fprintf(stdout, "\n"); - fflush(stdout); - - /* tidy up */ - SETFLAGS( ttyb, flags ); - if (fi != stdin) { - if (SETATTR(fileno(fi), &ttyb) < 0) - perror("SETATTR"); - } - (void) SIGNAL (SIGINT, sig); - if (fi != stdin) - (void) fclose(fi); - else - i = getchar(); - if (no_pass) - return(NULL); - return(pbuf); -#endif /* DOS */ -} - void printbase( char *lead, char *s ) {