diff --git a/clients/ud/auth.c b/clients/ud/auth.c
index 4174a396a1883e9d506da6289a18a1b0311429b4..560c702af481f68114149c2bd16a14afe1b7029a 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 4de87a0116adfb52d9b869e2375992c6dfbef601..3dd04bbc372dc998e93785411eabcfba904792de 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 e2ab11915074551732b5cb49d9ada9bc3ee79fc6..1d0db263fafc3051b46e1fc1f673c7c84121de0e 100644
--- a/clients/ud/util.c
+++ b/clients/ud/util.c
@@ -24,132 +24,12 @@
 #include <ac/time.h>
 #include <ac/unistd.h>
 
-#ifdef HAVE_FCNTL_H
-#include <fcntl.h>
-#endif
-
-#ifdef HAVE_CONIO_H
-#include <conio.h>
-#endif
-
 #include <lber.h>
 #include <ldap.h>
 #include <ldapconfig.h>
 
 #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 )
 {