]> git.sur5r.net Git - openldap/blobdiff - servers/slapd/backend.c
fix previous commit (ITS#5819)
[openldap] / servers / slapd / backend.c
index 459490b4ee8eea9be6561c47dde6b548d4d3629e..df66dd0f0992f9e23b7fee5cce8c272a64ba9cb1 100644 (file)
@@ -261,8 +261,6 @@ int backend_startup(Backend *be)
                                return rc;
                        }
                }
-               /* append global access controls */
-               acl_append( &be->be_acl, frontendDB->be_acl, -1 );
 
                return backend_startup_one( be, &cr );
        }
@@ -310,8 +308,6 @@ int backend_startup(Backend *be)
                                "has no suffix\n",
                                i, be->bd_info->bi_type, 0 );
                }
-               /* append global access controls */
-               acl_append( &be->be_acl, frontendDB->be_acl, -1 );
 
                rc = backend_startup_one( be, &cr );
 
@@ -349,11 +345,13 @@ int backend_shutdown( Backend *be )
                }
 
                if ( be->bd_info->bi_db_close ) {
-                       be->bd_info->bi_db_close( be, NULL );
+                       rc = be->bd_info->bi_db_close( be, NULL );
+                       if ( rc ) return rc;
                }
 
                if( be->bd_info->bi_close ) {
-                       be->bd_info->bi_close( be->bd_info );
+                       rc = be->bd_info->bi_close( be->bd_info );
+                       if ( rc ) return rc;
                }
 
                return 0;
@@ -451,7 +449,7 @@ void backend_destroy_one( BackendDB *bd, int dynamic )
        if ( !BER_BVISNULL( &bd->be_rootpw ) ) {
                free( bd->be_rootpw.bv_val );
        }
-       acl_destroy( bd->be_acl, frontendDB->be_acl );
+       acl_destroy( bd->be_acl );
        limits_destroy( bd->be_limits );
        if ( !BER_BVISNULL( &bd->be_update_ndn ) ) {
                ch_free( bd->be_update_ndn.bv_val );
@@ -502,7 +500,8 @@ int backend_destroy(void)
                if ( !BER_BVISNULL( &bd->be_rootpw ) ) {
                        free( bd->be_rootpw.bv_val );
                }
-               acl_destroy( bd->be_acl, frontendDB->be_acl );
+               acl_destroy( bd->be_acl );
+               frontendDB = NULL;
        }
 
        return 0;
@@ -947,7 +946,9 @@ backend_check_controls(
                                if ( !op->o_bd->be_ctrls[cid] && (*ctrls)->ldctl_iscritical ) {
 #ifdef SLAP_CONTROL_X_WHATFAILED
                                        if ( get_whatFailed( op ) ) {
-                                               char *oids[ 2 ] = { (*ctrls)->ldctl_oid, NULL };
+                                               char *oids[ 2 ];
+                                               oids[ 0 ] = (*ctrls)->ldctl_oid;
+                                               oids[ 1 ] = NULL;
                                                slap_ctrl_whatFailed_add( op, rs, oids );
                                        }
 #endif