diff --git a/CHANGES b/CHANGES
index ec13b000fdc88f596b43ae3b9aa6927d5aaf5a12..bc17e58e63fca81f4b10203abf42a0869cbaa19e 100644
--- a/CHANGES
+++ b/CHANGES
@@ -4,6 +4,7 @@ OpenLDAP 2.4.10 Engineering
 	Fixed libldap file descriptor leak with SELinux (ITS#5507)
 	Fixed libldap ld_defconn cleanup if it was freed (ITS#5518, ITS#5525)
 	Fixed libldap msgid handling (ITS#5318)
+	Fixed libldap t61 infinite loop (ITS#5542)
 	Fixed libldap_r missing stubs (ITS#5519)
 	Fixed slapd initialization of sr_msgid, rs->sr_tag (ITS#5461)
 	Fixed slapd missing termination of integerFilter keys (ITS#5503)
diff --git a/libraries/libldap/t61.c b/libraries/libldap/t61.c
index 3245c42fc56b63339458e641dceca27569381a29..e5c89bf811796cb716bb7d4f5b3c0155d7a0f3c2 100644
--- a/libraries/libldap/t61.c
+++ b/libraries/libldap/t61.c
@@ -684,6 +684,8 @@ int ldap_utf8s_to_t61s( struct berval *src, struct berval *dst )
 			*d++ = 0x3f;
 			break;
 		}
+		i += j;
+		c += j;
 	}
 	*d = '\0';
 	return LDAP_SUCCESS;