From 5713128aa59ad15df97387a0b13540a662ac490d Mon Sep 17 00:00:00 2001
From: Quanah Gibson-Mount <quanah@openldap.org>
Date: Tue, 27 May 2008 22:08:37 +0000
Subject: [PATCH] ITS#5518,ITS#5525

---
 CHANGES                     | 1 +
 libraries/libldap/request.c | 5 +++++
 2 files changed, 6 insertions(+)

diff --git a/CHANGES b/CHANGES
index 7d32a01905..3af472e719 100644
--- a/CHANGES
+++ b/CHANGES
@@ -2,6 +2,7 @@ OpenLDAP 2.4 Change Log
 
 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_r missing stubs (ITS#5519)
 	Fixed slapd missing termination of integerFilter keys (ITS#5503)
 	Fixed slapd multiple attrs in URI (ITS#5516)
diff --git a/libraries/libldap/request.c b/libraries/libldap/request.c
index 9894301b88..31d72ca0e2 100644
--- a/libraries/libldap/request.c
+++ b/libraries/libldap/request.c
@@ -631,6 +631,9 @@ ldap_free_connection( LDAP *ld, LDAPConn *lc, int force, int unbind )
 				} else {
 				    prevlc->lconn_next = tmplc->lconn_next;
 				}
+				if ( ld->ld_defconn == lc ) {
+					ld->ld_defconn = NULL;
+				}
 				break;
 			}
 			prevlc = tmplc;
@@ -675,6 +678,8 @@ ldap_free_connection( LDAP *ld, LDAPConn *lc, int force, int unbind )
 
 		if ( lc->lconn_sb != ld->ld_sb ) {
 			ber_sockbuf_free( lc->lconn_sb );
+		} else {
+			ber_int_sb_close( lc->lconn_sb );
 		}
 
 		if ( lc->lconn_rebind_queue != NULL) {
-- 
GitLab