X-Git-Url: https://git.sur5r.net/?a=blobdiff_plain;f=servers%2Fslapd%2Fslapacl.c;h=cc49b215256d48a07534dbd634c5deedd2d89da9;hb=447f3f746e59fc5b724b8dd8bfb1ec0e02cc8d9f;hp=99b5afa5d2ba35c4039a77b52a7865587ba04064;hpb=93fbb87545fd670f93a758f1baf1a67f3c4803ea;p=openldap diff --git a/servers/slapd/slapacl.c b/servers/slapd/slapacl.c index 99b5afa5d2..cc49b21525 100644 --- a/servers/slapd/slapacl.c +++ b/servers/slapd/slapacl.c @@ -1,6 +1,7 @@ +/* $OpenLDAP$ */ /* This work is part of OpenLDAP Software . * - * Copyright 2004-2007 The OpenLDAP Foundation. + * Copyright 2004-2009 The OpenLDAP Foundation. * Portions Copyright 2004 Pierangelo Masarati. * All rights reserved. * @@ -97,6 +98,7 @@ slapacl( int argc, char **argv ) connection_fake_init( &conn, &opbuf, &conn ); op = &opbuf.ob_op; + op->o_tmpmemctx = NULL; conn.c_listener = &listener; conn.c_listener_url = listener_url; @@ -238,7 +240,7 @@ slapacl( int argc, char **argv ) if ( !be->be_entry_open || !be->be_entry_close || !be->be_dn2id_get || - !be->be_id2entry_get ) + !be->be_entry_get ) { fprintf( stderr, "%s: target database " "doesn't support necessary operations; " @@ -264,7 +266,8 @@ slapacl( int argc, char **argv ) rc = 1; goto destroy; } - if ( be->be_id2entry_get( be, id, &ep ) != 0 ) { + ep = be->be_entry_get( be, id ); + if ( ep == NULL ) { fprintf( stderr, "%s: unable to fetch entry \"%s\" (%lu)\n", progname, e.e_nname.bv_val, id ); rc = 1; @@ -384,7 +387,7 @@ destroy:; ber_memfree( e.e_nname.bv_val ); } if ( !dryrun && be ) { - if ( ep != &e ) { + if ( ep && ep != &e ) { be_entry_release_r( op, ep ); } if ( doclose ) { @@ -398,7 +401,8 @@ destroy:; } } - slap_tool_destroy(); + if ( slap_tool_destroy()) + rc = EXIT_FAILURE; return rc; }