diff --git a/servers/slapd/back-bdb2/index.c b/servers/slapd/back-bdb2/index.c
index 63731f666ed09076c9353fa66b19c2ef9c8f0e1e..87b0a7318ac6596c30bdccebf8a56338b1b1a56f 100644
--- a/servers/slapd/back-bdb2/index.c
+++ b/servers/slapd/back-bdb2/index.c
@@ -271,6 +271,9 @@ bdb2i_index_add_values(
 
 		value_normalize( val, syntax );
 
+		/* value_normalize could change the length of val */
+		len = strlen( val );
+
 		/*
 		 * equality index entry
 		 */
diff --git a/servers/slapd/back-ldbm/index.c b/servers/slapd/back-ldbm/index.c
index be528ed36494ceba2799aecf392354b3bc02d3e8..8561da7040243c23217d6501b4a9ca80eca9eb0c 100644
--- a/servers/slapd/back-ldbm/index.c
+++ b/servers/slapd/back-ldbm/index.c
@@ -31,9 +31,8 @@ index_add_entry(
 	 * with index_add_values() call
 	 */
 
-	bv.bv_val = ch_strdup( e->e_dn );
+	bv.bv_val = ch_strdup( e->e_ndn );
 	bv.bv_len = strlen( bv.bv_val );
-	(void) dn_normalize_case( bv.bv_val );
 	bvals[0] = &bv;
 	bvals[1] = NULL;
 
@@ -52,7 +51,7 @@ index_add_entry(
 	}
 
 	Debug( LDAP_DEBUG_TRACE, "<= index_add( %ld, \"%s\" ) 0\n", e->e_id,
-	    e->e_dn, 0 );
+	    e->e_ndn, 0 );
 	return( 0 );
 }
 
@@ -279,6 +278,9 @@ index_add_values(
 
 		value_normalize( val, syntax );
 
+		/* value_normalize could change the length of val */
+		len = strlen( val );
+
 		/*
 		 * equality index entry
 		 */