diff --git a/CHANGES b/CHANGES
index cde9f34d17c58b8b6b55bd8f3e863e807d18744a..13439c53c9b8db3eff710b572f3c6d89d6fdaa44 100644
--- a/CHANGES
+++ b/CHANGES
@@ -14,6 +14,7 @@ OpenLDAP 2.4.14 Engineering
 	Fixed slapd bconfig encoding incorrectly (ITS#5897)
 	Fixed slapd connection assert (ITS#5835)
 	Fixed slapd epoll handling (ITS#5886)
+	Added slapd slapi_pw_find (ITS#2615,ITS#4359)
 	Fixed slapd syncrepl rename handling (ITS#5809)
 	Fixed slapd syncrepl MMR when adding new server (ITS#5850)
 	Fixed slapd syncrepl MMR with deleted entries (ITS#5843)
diff --git a/servers/slapd/slapi/slapi_utils.c b/servers/slapd/slapi/slapi_utils.c
index 3e1eb2269388337b5c21eadfc7a5087589da6116..ecf351d90dbe8324b77d831489fd87714123eddd 100644
--- a/servers/slapd/slapi/slapi_utils.c
+++ b/servers/slapd/slapi/slapi_utils.c
@@ -26,6 +26,7 @@
 #include <ac/stdarg.h>
 #include <ac/ctype.h>
 #include <ac/unistd.h>
+#include <lutil.h>
 
 #include <slap.h>
 #include <slapi.h>
@@ -1820,9 +1821,16 @@ slapi_pw_find(
 	struct berval	**vals, 
 	struct berval	*v ) 
 {
-	/*
-	 * FIXME: what's the point?
-	 */
+	int i;
+
+	if( ( vals == NULL ) || ( v == NULL ) )
+		return 1;
+
+	for ( i = 0; vals[i] != NULL; i++ ) {
+		if ( !lutil_passwd( vals[i], v, NULL, NULL ) )
+			return 0;
+	}
+
 	return 1;
 }