]> git.sur5r.net Git - openldap/blobdiff - servers/slapd/back-sql/init.c
ITS#7158 Fix a crash in back-sql
[openldap] / servers / slapd / back-sql / init.c
index 5f6bd0c2b848f16ce889c2dd607514cf46976afa..055380f9cd312be80eea5bcc61fd0cba877eeb8e 100644 (file)
@@ -1,7 +1,7 @@
 /* $OpenLDAP$ */
 /* This work is part of OpenLDAP Software <http://www.openldap.org/>.
  *
- * Copyright 1999-2007 The OpenLDAP Foundation.
+ * Copyright 1999-2012 The OpenLDAP Foundation.
  * Portions Copyright 1999 Dmitry Kovalev.
  * Portions Copyright 2002 Pierangelo Masarati.
  * All rights reserved.
@@ -38,12 +38,15 @@ sql_back_initialize(
                LDAP_CONTROL_ASSERT,
                LDAP_CONTROL_MANAGEDSAIT,
                LDAP_CONTROL_NOOP,
-#if 0 /* SLAP_CONTROL_X_TREE_DELETE */
+#ifdef SLAP_CONTROL_X_TREE_DELETE
                SLAP_CONTROL_X_TREE_DELETE,
 #endif /* SLAP_CONTROL_X_TREE_DELETE */
+#ifndef BACKSQL_ARBITRARY_KEY
                LDAP_CONTROL_PAGEDRESULTS,
+#endif /* ! BACKSQL_ARBITRARY_KEY */
                NULL
        };
+       int rc;
 
        bi->bi_controls = controls;
 
@@ -56,7 +59,7 @@ sql_back_initialize(
        Debug( LDAP_DEBUG_TRACE,"==>sql_back_initialize()\n", 0, 0, 0 );
        
        bi->bi_db_init = backsql_db_init;
-       bi->bi_db_config = backsql_db_config;
+       bi->bi_db_config = config_generic_wrapper;
        bi->bi_db_open = backsql_db_open;
        bi->bi_db_close = backsql_db_close;
        bi->bi_db_destroy = backsql_db_destroy;
@@ -78,8 +81,9 @@ sql_back_initialize(
  
        bi->bi_connection_init = 0;
 
+       rc = backsql_init_cf( bi );
        Debug( LDAP_DEBUG_TRACE,"<==sql_back_initialize()\n", 0, 0, 0 );
-       return 0;
+       return rc;
 }
 
 int
@@ -110,6 +114,7 @@ backsql_db_init(
        }
 
        bd->be_private = bi;
+       bd->be_cf_ocs = bd->bd_info->bi_cf_ocs;
 
        Debug( LDAP_DEBUG_TRACE, "<==backsql_db_init()\n", 0, 0, 0 );
 
@@ -546,7 +551,7 @@ backsql_db_open(
        }
 
        /* This should just be to force schema loading */
-       connection_fake_init( &conn, &opbuf, thrctx );
+       connection_fake_init2( &conn, &opbuf, thrctx, 0 );
        op = &opbuf.ob_op;
        op->o_bd = bd;
        if ( backsql_get_db_conn( op, &dbh ) != LDAP_SUCCESS ) {