]> git.sur5r.net Git - openldap/blobdiff - servers/slapd/back-ldbm/compare.c
ITS#4310 seems to affect also back-ldbm
[openldap] / servers / slapd / back-ldbm / compare.c
index 0adf7028b1e5fabdc76a10398014c4fdc77bc67e..f0a7e167b5598233b0b5c5ee016c793b35634fe0 100644 (file)
@@ -1,8 +1,17 @@
 /* compare.c - ldbm backend compare routine */
 /* $OpenLDAP$ */
-/*
- * Copyright 1998-2003 The OpenLDAP Foundation, All Rights Reserved.
- * COPYING RESTRICTIONS APPLY, see COPYRIGHT file
+/* This work is part of OpenLDAP Software <http://www.openldap.org/>.
+ *
+ * Copyright 1998-2006 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
+ * <http://www.OpenLDAP.org/license.html>.
  */
 
 #include "portable.h"
@@ -50,7 +59,8 @@ ldbm_back_compare(
 
                if ( rs->sr_ref ) ber_bvarray_free( rs->sr_ref );
                free( (char *)rs->sr_matched );
-
+               rs->sr_ref = NULL;
+               rs->sr_matched = NULL;
                return( 1 );
        }
 
@@ -58,13 +68,8 @@ ldbm_back_compare(
                /* entry is a referral, don't allow add */
                rs->sr_ref = get_entry_referrals( op, e );
 
-#ifdef NEW_LOGGING
-               LDAP_LOG( BACK_LDBM, INFO, 
-                       "ldbm_back_compare: entry (%s) is a referral.\n", e->e_dn, 0, 0 );
-#else
                Debug( LDAP_DEBUG_TRACE, "entry is referral\n", 0,
                    0, 0 );
-#endif
 
 
                rs->sr_err = LDAP_REFERRAL;
@@ -72,7 +77,8 @@ ldbm_back_compare(
                send_ldap_result( op, rs );
 
                if ( rs->sr_ref ) ber_bvarray_free( rs->sr_ref );
-
+               rs->sr_ref = NULL;
+               rs->sr_matched = NULL;
                rs->sr_err = 1;
                goto return_results;
        }
@@ -94,14 +100,11 @@ ldbm_back_compare(
        {
                rs->sr_err = LDAP_COMPARE_FALSE;
 
-#ifdef SLAP_NVALUES
                if ( value_find_ex( op->oq_compare.rs_ava->aa_desc,
                        SLAP_MR_ATTRIBUTE_VALUE_NORMALIZED_MATCH |
                                SLAP_MR_ASSERTED_VALUE_NORMALIZED_MATCH,
-                       a->a_nvals, &op->oq_compare.rs_ava->aa_value ) == 0 )
-#else
-               if ( value_find( op->oq_compare.rs_ava->aa_desc, a->a_vals, &op->oq_compare.rs_ava->aa_value ) == 0 )
-#endif
+                       a->a_nvals, &op->oq_compare.rs_ava->aa_value,
+                       op->o_tmpmemctx ) == 0 )
                {
                        rs->sr_err = LDAP_COMPARE_TRUE;
                        break;