diff --git a/CHANGES b/CHANGES
index 4c2d559887e09ac0048aa3b5a76a2b840cf5d5ec..c209ffd5720c093be7d01c39fe4c148cdcb0be31 100644
--- a/CHANGES
+++ b/CHANGES
@@ -6,6 +6,7 @@ OpenLDAP 2.2.28 Engineering
 	Fixed back-hdb nested modrdn bug (ITS#3857)
 	Fixed back-ldap/meta undefined filter propagation (ITS#3785)
 	Fixed back-ldap/meta rewrite session memory leak
+	Fixed back-ldap abandon leak (ITS#3862)
 	Fixed back-meta add w/o parent add (ITS#3804)
 	Fixed back-meta control propagation bug (ITS#3813)
 	Fixed syncrepl SASL bind crash (ITS#3792)
diff --git a/servers/slapd/back-ldap/search.c b/servers/slapd/back-ldap/search.c
index b90002e9052cad4f5cfa106be266ea57c613922d..2c9375e961ee95d447322accc85822a5017bb763 100644
--- a/servers/slapd/back-ldap/search.c
+++ b/servers/slapd/back-ldap/search.c
@@ -182,6 +182,9 @@ fail:;
 	{
 		/* check for abandon */
 		if ( op->o_abandon ) {
+			if ( rc > 0 ) {
+				ldap_msgfree( res );
+			}
 			ldap_abandon( lc->ld, msgid );
 			rc = 0;
 			goto finish;