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