diff --git a/CHANGES b/CHANGES
index 0441174d4b8d6b3146af1885a74208843aa0a12f..72bd44e1e0ab5d879e4d3cc90eb7b7e5132dfe05 100644
--- a/CHANGES
+++ b/CHANGES
@@ -1,6 +1,7 @@
 OpenLDAP 2.4 Change Log
 
 OpenLDAP 2.4.12 Engineering
+	Fixed libldap ldap_utf8_strchar arguments (ITS#5720)
 	Fixed libldap TLS_CRLFILE (ITS#5677)
 	Fixed liblutil executables on Windows (ITS#5604)
 	Fixed liblutil microsecond overflows on Windows (ITS#5668)
diff --git a/libraries/libldap/charray.c b/libraries/libldap/charray.c
index a02a6b94d24f8e747ac2c73dcc1d6f9f1c8cc46d..b679f75d835209c974b2bf0f2634eaa2c8b1cd53 100644
--- a/libraries/libldap/charray.c
+++ b/libraries/libldap/charray.c
@@ -191,10 +191,10 @@ ldap_str2charray( const char *str_in, const char *brkstr )
 	}
 
 	i = 1;
-	for ( s = str; *s; s++ ) {
-		if ( ldap_utf8_strchr( brkstr, s ) != NULL ) {
-			i++;
-		}
+	for ( s = str; *s; LDAP_UTF8_INCR(s) ) {
+		s = ldap_utf8_strchr( s, brkstr );
+		if ( !s ) break;
+		i++;
 	}
 
 	res = (char **) LDAP_MALLOC( (i + 1) * sizeof(char *) );