s4-ldb: fixed string length handling on index records
authorAndrew Tridgell <tridge@samba.org>
Sun, 25 Oct 2009 02:12:32 +0000 (13:12 +1100)
committerAndrew Tridgell <tridge@samba.org>
Sun, 25 Oct 2009 02:15:18 +0000 (13:15 +1100)
source4/lib/ldb/ldb_tdb/ldb_index.c

index 9faba397d02e6538123e0ebc8d4a4d7bd9587a2f..5002de527bf35ccc42e85cb0d1a64a7f57f7e0d5 100644 (file)
@@ -312,7 +312,7 @@ static int ltdb_index_traverse_store(struct tdb_context *tdb, TDB_DATA key, TDB_
        }
 
        v.data = key.dptr;
        }
 
        v.data = key.dptr;
-       v.length = key.dsize;
+       v.length = strnlen((char *)key.dptr, key.dsize);
 
        dn = ldb_dn_from_ldb_val(module, ldb, &v);
        if (dn == NULL) {
 
        dn = ldb_dn_from_ldb_val(module, ldb, &v);
        if (dn == NULL) {
@@ -1417,7 +1417,7 @@ static int delete_index(struct tdb_context *tdb, TDB_DATA key, TDB_DATA data, vo
        list.dn = NULL;
        list.count = 0;
        v.data = key.dptr;
        list.dn = NULL;
        list.count = 0;
        v.data = key.dptr;
-       v.length = strlen((char *)key.dptr);
+       v.length = strnlen((char *)key.dptr, key.dsize);
 
        dn = ldb_dn_from_ldb_val(ltdb, ldb_module_get_ctx(module), &v);
        ret = ltdb_dn_list_store(module, dn, &list);
 
        dn = ldb_dn_from_ldb_val(ltdb, ldb_module_get_ctx(module), &v);
        ret = ltdb_dn_list_store(module, dn, &list);