]> git.sur5r.net Git - openldap/blobdiff - servers/slapd/bind.c
fix database operations in tool mode (ITS#3622)
[openldap] / servers / slapd / bind.c
index 836e9d4ce51056a8e5101bc5244769160b59df8a..c39caea9f64e37be8a26d0ead16d2685e5fa49bd 100644 (file)
@@ -2,7 +2,7 @@
 /* $OpenLDAP$ */
 /* This work is part of OpenLDAP Software <http://www.openldap.org/>.
  *
- * Copyright 1998-2004 The OpenLDAP Foundation.
+ * Copyright 1998-2005 The OpenLDAP Foundation.
  * All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
@@ -231,7 +231,7 @@ fe_op_bind( Operation *op, SlapReply *rs )
        struct berval   mech = op->orb_tmp_mech;
 
        /* check for inappropriate controls */
-       if( get_manageDSAit( op ) == SLAP_CRITICAL_CONTROL ) {
+       if( get_manageDSAit( op ) == SLAP_CONTROL_CRITICAL ) {
                send_ldap_error( op, rs,
                        LDAP_UNAVAILABLE_CRITICAL_EXTENSION,
                        "manageDSAit control inappropriate" );
@@ -464,7 +464,9 @@ fe_op_bind( Operation *op, SlapReply *rs )
                /* don't return referral for bind requests */
                /* noSuchObject is not allowed to be returned by bind */
                rs->sr_err = LDAP_INVALID_CREDENTIALS;
+               op->o_bd = frontendDB;
                send_ldap_result( op, rs );
+               op->o_bd = NULL;
                goto cleanup;
        }
 
@@ -594,6 +596,7 @@ fe_op_bind( Operation *op, SlapReply *rs )
 
                } else if ( !BER_BVISNULL( &op->orb_edn ) ) {
                        free( op->orb_edn.bv_val );
+                       BER_BVZERO( &op->orb_edn );
                }
 
        } else {