X-Git-Url: https://git.sur5r.net/?a=blobdiff_plain;f=servers%2Fslapd%2Fback-ldap%2Finit.c;h=bd4e73d3d4b608b8e847fae110d20001772daee4;hb=a3d8cda2011920fae1e499e0f4c8c794f927138e;hp=3beaec8d57f53ff4927794653b66f08d081d10ee;hpb=17e46d84685d06b6e912d133e12b82501d99ab25;p=openldap diff --git a/servers/slapd/back-ldap/init.c b/servers/slapd/back-ldap/init.c index 3beaec8d57..bd4e73d3d4 100644 --- a/servers/slapd/back-ldap/init.c +++ b/servers/slapd/back-ldap/init.c @@ -1,8 +1,22 @@ /* init.c - initialize ldap backend */ /* $OpenLDAP$ */ -/* - * Copyright 1998-2003 The OpenLDAP Foundation, All Rights Reserved. - * COPYING RESTRICTIONS APPLY, see COPYRIGHT file +/* This work is part of OpenLDAP Software . + * + * Copyright 2003 The OpenLDAP Foundation. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted only as authorized by the OpenLDAP + * Public License. + * + * A copy of this license is available in the file LICENSE in the + * top-level directory of the distribution or, alternatively, at + * . + */ +/* ACKNOWLEDGEMENTS: + * This work was initially developed by the Howard Chu for inclusion + * in OpenLDAP Software and subsequently enhanced by Pierangelo + * Masarati. */ /* This is an altered version */ /* @@ -39,6 +53,7 @@ #include +#include #include #include "slap.h" @@ -46,7 +61,7 @@ #ifdef SLAPD_LDAP_DYNAMIC -int back_ldap_LTX_init_module(int argc, char *argv[]) { +int init_module(int argc, char *argv[]) { BackendInfo bi; memset( &bi, '\0', sizeof(bi) ); @@ -95,6 +110,8 @@ ldap_back_initialize( bi->bi_connection_init = 0; bi->bi_connection_destroy = ldap_back_conn_destroy; + ldap_chain_setup(); + return 0; } @@ -117,8 +134,8 @@ ldap_back_db_init( li->bindpw.bv_len = 0; #ifdef ENABLE_REWRITE - li->rwinfo = rewrite_info_init( REWRITE_MODE_USE_DEFAULT ); - if ( li->rwinfo == NULL ) { + li->rwmap.rwm_rw = rewrite_info_init( REWRITE_MODE_USE_DEFAULT ); + if ( li->rwmap.rwm_rw == NULL ) { ch_free( li ); return -1; } @@ -126,10 +143,12 @@ ldap_back_db_init( ldap_pvt_thread_mutex_init( &li->conn_mutex ); - ldap_back_map_init( &li->at_map, &mapping ); + ldap_back_map_init( &li->rwmap.rwm_oc, &mapping ); + ldap_back_map_init( &li->rwmap.rwm_at, &mapping ); li->be = be; be->be_private = li; + be->be_flags |= SLAP_BFLAG_NOLASTMOD; return 0; } @@ -145,6 +164,7 @@ ldap_back_conn_free( ch_free( lc->bound_dn.bv_val ); } if ( lc->cred.bv_val ) { + memset( lc->cred.bv_val, 0, lc->cred.bv_len ); ch_free( lc->cred.bv_val ); } if ( lc->local_dn.bv_val ) { @@ -191,19 +211,19 @@ ldap_back_db_destroy( avl_free( li->conntree, ldap_back_conn_free ); } #ifdef ENABLE_REWRITE - if (li->rwinfo) { - rewrite_info_delete( li->rwinfo ); + if (li->rwmap.rwm_rw) { + rewrite_info_delete( &li->rwmap.rwm_rw ); } #else /* !ENABLE_REWRITE */ - if (li->suffix_massage) { - ber_bvarray_free( li->suffix_massage ); + if (li->rwmap.rwm_suffix_massage) { + ber_bvarray_free( li->rwmap.rwm_suffix_massage ); } #endif /* !ENABLE_REWRITE */ - avl_free( li->oc_map.remap, NULL ); - avl_free( li->oc_map.map, mapping_free ); - avl_free( li->at_map.remap, NULL ); - avl_free( li->at_map.map, mapping_free ); + avl_free( li->rwmap.rwm_oc.remap, NULL ); + avl_free( li->rwmap.rwm_oc.map, mapping_free ); + avl_free( li->rwmap.rwm_at.remap, NULL ); + avl_free( li->rwmap.rwm_at.map, mapping_free ); ldap_pvt_thread_mutex_unlock( &li->conn_mutex ); ldap_pvt_thread_mutex_destroy( &li->conn_mutex );