From 8dad7e145293550d6348ac6e7cef7aabfab99031 Mon Sep 17 00:00:00 2001
From: Quanah Gibson-Mount <quanah@openldap.org>
Date: Mon, 9 Feb 2009 21:30:54 +0000
Subject: [PATCH] Fix ITS#5931 crasher bits

---
 CHANGES                          |  1 +
 servers/slapd/back-ldap/search.c |  6 ++++++
 servers/slapd/back-meta/search.c | 17 ++++++++++++++++-
 3 files changed, 23 insertions(+), 1 deletion(-)

diff --git a/CHANGES b/CHANGES
index 3c662de1d8..b371d1f4e0 100644
--- a/CHANGES
+++ b/CHANGES
@@ -39,6 +39,7 @@ OpenLDAP 2.4.14 Engineering
 	Fixed slapd-ldap idassert-bind validity checking (ITS#5863)
 	Fixed slapd-ldap/meta RFC4525 increment support (ITS#5912)
 	Fixed slapd-ldap/meta search dereferencing (ITS#5916)
+	Fixed slapd-ldap/meta with intermediate response (ITS#5931)
 	Fixed slapd-ldif numerous bugs (ITS#5408)
 	Fixed slapd-ldif rename on same DN (ITS#5319)
 	Fixed slapd-ldif deadlock (ITS#5329)
diff --git a/servers/slapd/back-ldap/search.c b/servers/slapd/back-ldap/search.c
index a3718aca4c..e9788e2fbe 100644
--- a/servers/slapd/back-ldap/search.c
+++ b/servers/slapd/back-ldap/search.c
@@ -423,6 +423,12 @@ retry:
 				rs->sr_ctrls = NULL;
 			}
 
+		} else if ( rc == LDAP_RES_INTERMEDIATE ) {
+			Debug( LDAP_DEBUG_ANY,
+				"%s ldap_back_search: "
+				"intermediate response not supported yet.\n",
+				op->o_log_prefix, 0, 0 );
+
 		} else {
 			char		*err = NULL;
 
diff --git a/servers/slapd/back-meta/search.c b/servers/slapd/back-meta/search.c
index 6f237ea08e..5e96995b36 100644
--- a/servers/slapd/back-meta/search.c
+++ b/servers/slapd/back-meta/search.c
@@ -1411,6 +1411,16 @@ really_bad:;
 					 */
 					assert( ncandidates > 0 );
 					--ncandidates;
+
+				} else if ( rc == LDAP_RES_INTERMEDIATE ) {
+					/* TODO: ITS#5931 */
+
+					/* ignore right now */
+					Debug( LDAP_DEBUG_ANY,
+						"%s meta_back_search[%ld]: "
+						"intermediate response message not supported yet.\n",
+						op->o_log_prefix,
+						i, 0 );
 	
 				} else if ( rc == LDAP_RES_BIND ) {
 					meta_search_candidate_t	retcode;
@@ -1450,7 +1460,12 @@ really_bad:;
 					}
 	
 				} else {
-					assert( 0 );
+					Debug( LDAP_DEBUG_ANY,
+						"%s meta_back_search[%ld]: "
+						"unrecognized response message tag=%d\n",
+						op->o_log_prefix,
+						i, rc );
+				
 					ldap_msgfree( res );
 					res = NULL;
 					goto really_bad;
-- 
GitLab