diff --git a/clients/tools/Makefile.in b/clients/tools/Makefile.in
index 0e1e976268657e04ae0dc799f9257c4102e33300..867f8352a6ef1cf38d2fff3adff0db8c6717f602 100644
--- a/clients/tools/Makefile.in
+++ b/clients/tools/Makefile.in
@@ -10,7 +10,7 @@ LDAP_LIBDIR= ../../libraries
 XLIBS =  -lldif -lldap -llber -llutil
 XXLIBS	= $(KRB_LIBS) $(LUTIL_LIBS)
 
-XSRCS	= ldsversion.c ldmversion.c lddversion.c ldrversion.c
+XSRCS	= ldsversion.c ldmversion.c lddversion.c ldrversion.c ldpversion.c
 
 PROGRAMS = ldapsearch ldapmodify ldapdelete ldapmodrdn ldapadd ldappasswd
 
diff --git a/clients/tools/ldapdelete.c b/clients/tools/ldapdelete.c
index f6dbe163857e7c4c0895687f5bcc6509056a1895..815d10e583e4916d87f9e93eb5bb0a226534eb41 100644
--- a/clients/tools/ldapdelete.c
+++ b/clients/tools/ldapdelete.c
@@ -70,6 +70,13 @@ main( int argc, char **argv )
 	    break;
 	case 'w':	/* password */
 	    passwd = strdup( optarg );
+		{
+			char* p;
+
+			for( p = optarg; *p == NULL; p++ ) {
+				*p = 'X';
+			}
+		}
 	    break;
 	case 'f':	/* read DNs from a file */
 	    if (( fp = fopen( optarg, "r" )) == NULL ) {
diff --git a/clients/tools/ldapmodify.c b/clients/tools/ldapmodify.c
index ebb917301951079d548d917a8152c69c64ad4fb7..37acfd6a0a4864d342d41809d37b627abd2e2f8f 100644
--- a/clients/tools/ldapmodify.c
+++ b/clients/tools/ldapmodify.c
@@ -159,6 +159,13 @@ main( int argc, char **argv )
 	    break;
 	case 'w':	/* password */
 	    passwd = strdup( optarg );
+		{
+			char* p;
+
+			for( p = optarg; *p == NULL; p++ ) {
+				*p = 'X';
+			}
+		}
 	    break;
 	case 'd':
 	    debug |= atoi( optarg );
diff --git a/clients/tools/ldapmodrdn.c b/clients/tools/ldapmodrdn.c
index 3642ab79d8d142d23f8f415f10d0ee5b1e521e63..897196dd1ea25a0bc5341bb8140b6289781941fa 100644
--- a/clients/tools/ldapmodrdn.c
+++ b/clients/tools/ldapmodrdn.c
@@ -90,6 +90,13 @@ main(int argc, char **argv)
 	    break;
 	case 'w':	/* password */
 	    passwd = strdup( optarg );
+		{
+			char* p;
+
+			for( p = optarg; *p == NULL; p++ ) {
+				*p = 'X';
+			}
+		}
 	    break;
 	case 'd':
 	    debug |= atoi( optarg );
diff --git a/clients/tools/ldappasswd.c b/clients/tools/ldappasswd.c
index b385ecbd9284e12c9fd5a660ddba609be61ffb28..02470392acd508af03c09a675a16196f9562414f 100644
--- a/clients/tools/ldappasswd.c
+++ b/clients/tools/ldappasswd.c
@@ -514,6 +514,13 @@ main (int argc, char *argv[])
 
 		case 'w':	/* bind password */
 			bindpw = strdup (optarg);
+			{
+				char* p;
+
+				for( p = optarg; *p == NULL; p++ ) {
+					*p = 'X';
+				}
+			}
 			break;
 
 		case 'Y':	/* salt length */
diff --git a/clients/tools/ldapsearch.c b/clients/tools/ldapsearch.c
index 5b227d1f722ba2b873c2f78750ca6be1699db3ef..ebb837d6f0ebd15b30d09c59db4c046a1b79b178 100644
--- a/clients/tools/ldapsearch.c
+++ b/clients/tools/ldapsearch.c
@@ -194,6 +194,13 @@ main( int argc, char **argv )
 	    break;
 	case 'w':	/* bind password */
 	    passwd = strdup( optarg );
+		{
+			char* p;
+
+			for( p = optarg; *p == NULL; p++ ) {
+				*p = 'X';
+			}
+		}
 	    break;
 	case 'l':	/* time limit */
 	    timelimit = atoi( optarg );