From a56c7ffc5e57f394ba60de307fd1cf25d3c1bdbf Mon Sep 17 00:00:00 2001
From: Quanah Gibson-Mount <quanah@openldap.org>
Date: Thu, 13 Aug 2009 02:02:36 +0000
Subject: [PATCH] ITS#6101

---
 CHANGES                | 1 +
 servers/slapd/result.c | 1 +
 servers/slapd/sasl.c   | 2 +-
 servers/slapd/slap.h   | 2 +-
 4 files changed, 4 insertions(+), 2 deletions(-)

diff --git a/CHANGES b/CHANGES
index aae961cf45..93fc93b701 100644
--- a/CHANGES
+++ b/CHANGES
@@ -10,6 +10,7 @@ OpenLDAP 2.4.18 Engineering
 	Fixed slapd server URL matching (ITS#5942)
 	Fixed slapd subordinate needs a suffix (ITS#6216)
 	Fixed slapd tools to properly close database (ITS#6214)
+	Fixed slapd uninitialized SlapReply components (ITS#6101)
 	Fixed slapd-ndb startup (ITS#6203)
 	Fixed slapd-relay various issues (ITS#6133)
 	Fixed slapd-relay response/cleanup callback mismatch (ITS#6154)
diff --git a/servers/slapd/result.c b/servers/slapd/result.c
index 16b87b40c1..353edc9982 100644
--- a/servers/slapd/result.c
+++ b/servers/slapd/result.c
@@ -616,6 +616,7 @@ send_ldap_disconnect( Operation	*op, SlapReply *rs )
 	assert( LDAP_UNSOLICITED_ERROR( rs->sr_err ) );
 
 	rs->sr_type = REP_EXTENDED;
+	rs->sr_rspdata = NULL;
 
 	Debug( LDAP_DEBUG_TRACE,
 		"send_ldap_disconnect %d:%s\n",
diff --git a/servers/slapd/sasl.c b/servers/slapd/sasl.c
index 14e3d25b6e..e12a82946f 100644
--- a/servers/slapd/sasl.c
+++ b/servers/slapd/sasl.c
@@ -1540,7 +1540,7 @@ int slap_sasl_bind( Operation *op, SlapReply *rs )
 		}
 
 		/* Must send response using old security layer */
-		if (response.bv_len) rs->sr_sasldata = &response;
+		rs->sr_sasldata = (response.bv_len ? &response : NULL);
 		send_ldap_sasl( op, rs );
 		
 		/* Now dispose of the old security layer.
diff --git a/servers/slapd/slap.h b/servers/slapd/slap.h
index 288d18f3de..65716aabcb 100644
--- a/servers/slapd/slap.h
+++ b/servers/slapd/slap.h
@@ -2064,9 +2064,9 @@ struct SlapReply {
 	BerVarray sr_ref;
 	LDAPControl **sr_ctrls;
 	union sr_u {
+		rep_search_s sru_search;
 		rep_sasl_s sru_sasl;
 		rep_extended_s sru_extended;
-		rep_search_s sru_search;
 	} sr_un;
 	slap_mask_t sr_flags;
 #define REP_ENTRY_MODIFIABLE	0x0001U
-- 
GitLab