]> git.sur5r.net Git - openldap/blobdiff - servers/slapd/back-ldbm/index.c
Do not return pointers into BerElement we do not own
[openldap] / servers / slapd / back-ldbm / index.c
index 97ac8fc494245480e25cdf649bd95a3f2942449a..2f38768a8cdcda734ecad3765db84bba89de6288 100644 (file)
@@ -1,7 +1,7 @@
 /* index.c - routines for dealing with attribute indexes */
 /* $OpenLDAP$ */
 /*
- * Copyright 1998-2002 The OpenLDAP Foundation, All Rights Reserved.
+ * Copyright 1998-2003 The OpenLDAP Foundation, All Rights Reserved.
  * COPYING RESTRICTIONS APPLY, see COPYRIGHT file
  */
 
@@ -292,11 +292,11 @@ int index_values(
 
 int
 index_entry(
-    Backend    *be,
+       Backend *be,
        int op,
-    Entry *e,
-       Attribute *ap )
+       Entry *e )
 {
+       Attribute *ap = e->e_attrs;
 #ifdef NEW_LOGGING
        LDAP_LOG( INDEX, ENTRY, 
                "index_entry: %s (%s)%ld\n", op == SLAP_INDEX_ADD_OP ? "add" : "del",
@@ -309,7 +309,13 @@ index_entry(
 
        /* add each attribute to the indexes */
        for ( ; ap != NULL; ap = ap->a_next ) {
-               index_values( be, ap->a_desc, ap->a_vals, e->e_id, op );
+               index_values( be, ap->a_desc,
+#ifdef SLAP_NVALUES
+                       ap->a_nvals,
+#else
+                       ap->a_vals,
+#endif
+                       e->e_id, op );
        }
 
 #ifdef NEW_LOGGING