diff --git a/CHANGES b/CHANGES
index 36f6a35ecd498b5730c3b12340c98cf1e587ac1b..2feab17e2130750efeb53e99bfbbb2b57e36b9e8 100644
--- a/CHANGES
+++ b/CHANGES
@@ -19,6 +19,7 @@ OpenLDAP 2.4.24 Engineering
 	Fixed libldap EOF handling (ITS#6723)
 	Fixed libldap GnuTLS hang on socket close (ITS#6673)
 	Fixed libldap sasl partial write handling (ITS#6639)
+	Fixed libldap search leak (ITS#6453)
 	Fixed libldap referral chasing (ITS#6602)
 	Fixed libldap leak when chasing referrals (ITS#6744)
 	Fixed libldap url parsing with NULL host (ITS#6653)
diff --git a/libraries/libldap/search.c b/libraries/libldap/search.c
index 65d55e477419d70bb3a4f49b65f38352ec9960cd..9bd71bb6163f7fbf1d334e2439592ade0018b894 100644
--- a/libraries/libldap/search.c
+++ b/libraries/libldap/search.c
@@ -182,6 +182,11 @@ ldap_pvt_search_s(
 
 	if( rc <= 0 ) {
 		/* error(-1) or timeout(0) */
+		if ( ld->ld_errno == LDAP_TIMEOUT ) {
+			/* cleanup request */
+			(void) ldap_abandon( ld, msgid );
+			ld->ld_errno = LDAP_TIMEOUT;
+		}
 		return( ld->ld_errno );
 	}