From cb3137d756c190145c590496cabb7731424906cd Mon Sep 17 00:00:00 2001
From: Kurt Zeilenga <kurt@openldap.org>
Date: Wed, 17 May 2006 17:27:21 +0000
Subject: [PATCH] Misc changes from HEAD

---
 servers/slapd/back-meta/bind.c      | 18 +++++++++++++-----
 servers/slapd/slapi/slapi_overlay.c |  4 +++-
 servers/slapd/slapi/slapi_pblock.c  | 10 ++++++----
 3 files changed, 22 insertions(+), 10 deletions(-)

diff --git a/servers/slapd/back-meta/bind.c b/servers/slapd/back-meta/bind.c
index 9b654c7584..cd79a04ced 100644
--- a/servers/slapd/back-meta/bind.c
+++ b/servers/slapd/back-meta/bind.c
@@ -636,13 +636,21 @@ retry:;
 
 done:;
 	rs->sr_err = rc;
-	if ( rc != LDAP_SUCCESS && META_BACK_ONERR_STOP( mi ) ) {
+	if ( rc != LDAP_SUCCESS ) {
+		if ( dolock ) {
+			ldap_pvt_thread_mutex_lock( &mi->mi_conninfo.lai_mutex );
+		}
 	        LDAP_BACK_CONN_BINDING_CLEAR( msc );
-	        LDAP_BACK_CONN_TAINTED_SET( mc );
-		meta_back_release_conn_lock( op, mc, dolock );
-		*mcp = NULL;
+		if ( META_BACK_ONERR_STOP( mi ) ) {
+	        	LDAP_BACK_CONN_TAINTED_SET( mc );
+			meta_back_release_conn_lock( op, mc, dolock );
+			*mcp = NULL;
+		}
+		if ( dolock ) {
+			ldap_pvt_thread_mutex_unlock( &mi->mi_conninfo.lai_mutex );
+		}
 
-		if ( sendok & LDAP_BACK_SENDERR ) {
+		if ( META_BACK_ONERR_STOP( mi ) && ( sendok & LDAP_BACK_SENDERR ) ) {
 			send_ldap_result( op, rs );
 		}
 	}
diff --git a/servers/slapd/slapi/slapi_overlay.c b/servers/slapd/slapi/slapi_overlay.c
index 0fb616118f..12425f06c1 100644
--- a/servers/slapd/slapi/slapi_overlay.c
+++ b/servers/slapd/slapi/slapi_overlay.c
@@ -97,12 +97,14 @@ slapi_over_compute_output(
 {
 	Attribute		**a;
 	AttributeDescription	*desc;
-	SlapReply		*rs = (SlapReply *)c->cac_private;
+	SlapReply		*rs;
 
 	if ( c == NULL || attribute == NULL || entry == NULL ) {
 		return 0;
 	}
 
+	rs = (SlapReply *)c->cac_private;
+
 	assert( rs->sr_entry == entry );
 
 	desc = attribute->a_desc;
diff --git a/servers/slapd/slapi/slapi_pblock.c b/servers/slapd/slapi/slapi_pblock.c
index 7ced845876..ea6d4edcb2 100644
--- a/servers/slapd/slapi/slapi_pblock.c
+++ b/servers/slapd/slapi/slapi_pblock.c
@@ -624,7 +624,7 @@ pblock_get( Slapi_PBlock *pb, int param, void **value )
 		break;
 	case SLAPI_MODIFY_MODS: {
 		LDAPMod **mods = NULL;
-		Modifications *ml;
+		Modifications *ml = NULL;
 
 		pblock_get_default( pb, param, (void **)&mods );
 		if ( mods == NULL && pb->pb_intop == 0 ) {
@@ -635,12 +635,14 @@ pblock_get( Slapi_PBlock *pb, int param, void **value )
 			case LDAP_REQ_MODRDN:
 				ml = pb->pb_op->orr_modlist;
 				break;
-			defaulat:
+			default:
 				rc = PBLOCK_ERROR;
 				break;
 			}
-			mods = slapi_int_modifications2ldapmods( ml );
-			pblock_set_default( pb, param, (void *)mods );
+			if ( rc != PBLOCK_ERROR ) {
+				mods = slapi_int_modifications2ldapmods( ml );
+				pblock_set_default( pb, param, (void *)mods );
+			}
 		}
 		*((LDAPMod ***)value) = mods;
 		break;
-- 
GitLab