s4-ldb: fixed the ldb 'displayName=a,b' indexing bug
authorAndrew Tridgell <tridge@samba.org>
Mon, 16 Aug 2010 01:03:58 +0000 (11:03 +1000)
committerAndrew Tridgell <tridge@samba.org>
Mon, 16 Aug 2010 22:44:28 +0000 (08:44 +1000)
the problem was the inconsistency between the key form of DNs between
the itdb used for indexing and the on disk form

Thanks to Matthieu Patou for finding this bug!

Signed-off-by: Andrew Bartlett <abartlet@samba.org>
source4/lib/ldb/ldb_tdb/ldb_index.c

index 4f5979877bd0da57e14e574e7413a8949026d4c0..a39e6c7097b46c2da11800e3d1f2b516f96b0bc0 100644 (file)
@@ -1446,8 +1446,10 @@ static int delete_index(struct tdb_context *tdb, TDB_DATA key, TDB_DATA data, vo
         * index entry */
        list.dn = NULL;
        list.count = 0;
-       v.data = key.dptr;
-       v.length = strnlen((char *)key.dptr, key.dsize);
+
+       /* the offset of 3 is to remove the DN= prefix. */
+       v.data = key.dptr + 3;
+       v.length = strnlen((char *)key.dptr, key.dsize) - 3;
 
        dn = ldb_dn_from_ldb_val(ltdb, ldb_module_get_ctx(module), &v);
        ret = ltdb_dn_list_store(module, dn, &list);