X-Git-Url: https://git.sur5r.net/?a=blobdiff_plain;f=servers%2Fslapd%2Fbackend.c;h=bde9f1a4606c779eb841158c193afcc3b3ebe8ea;hb=d800cd71fe67bb5ee9e10867db2442da30f0d9d7;hp=c5b01a06b42320da84e9d3f8608e606bac77a708;hpb=569344fb86fd1e7b4b304598839c157aa92e5447;p=openldap diff --git a/servers/slapd/backend.c b/servers/slapd/backend.c index c5b01a06b4..bde9f1a460 100644 --- a/servers/slapd/backend.c +++ b/servers/slapd/backend.c @@ -2,7 +2,7 @@ /* $OpenLDAP$ */ /* This work is part of OpenLDAP Software . * - * Copyright 1998-2011 The OpenLDAP Foundation. + * Copyright 1998-2014 The OpenLDAP Foundation. * All rights reserved. * * Redistribution and use in source and binary forms, with or without @@ -464,6 +464,9 @@ void backend_destroy_one( BackendDB *bd, int dynamic ) } acl_destroy( bd->be_acl ); limits_destroy( bd->be_limits ); + if ( bd->be_extra_anlist ) { + anlist_free( bd->be_extra_anlist, 1, NULL ); + } if ( !BER_BVISNULL( &bd->be_update_ndn ) ) { ch_free( bd->be_update_ndn.bv_val ); } @@ -1791,9 +1794,9 @@ backend_access( slap_mask_t *mask ) { Entry *e = NULL; - void *o_priv = op->o_private, *e_priv = NULL; + void *o_priv, *e_priv = NULL; int rc = LDAP_INSUFFICIENT_ACCESS; - Backend *be = op->o_bd; + Backend *be; /* pedantic */ assert( op != NULL ); @@ -1801,6 +1804,9 @@ backend_access( assert( edn != NULL ); assert( access > ACL_NONE ); + be = op->o_bd; + o_priv = op->o_private; + if ( !op->o_bd ) { op->o_bd = select_backend( edn, 0 ); }