summaryrefslogtreecommitdiff
path: root/source3/lib/tdb_multikey.c
diff options
context:
space:
mode:
Diffstat (limited to 'source3/lib/tdb_multikey.c')
-rw-r--r--source3/lib/tdb_multikey.c15
1 files changed, 9 insertions, 6 deletions
diff --git a/source3/lib/tdb_multikey.c b/source3/lib/tdb_multikey.c
index e8febd6f7b..7701845a9e 100644
--- a/source3/lib/tdb_multikey.c
+++ b/source3/lib/tdb_multikey.c
@@ -140,13 +140,14 @@ NTSTATUS tdb_find_keyed(TALLOC_CTX *ctx, struct tdb_context *tdb,
prim.dptr = data.dptr = NULL;
- key.dptr = talloc_asprintf(ctx, "KEY/%d/%s", keynumber, value);
+ key.dsize = talloc_asprintf_len(ctx, &key.dptr, "KEY/%d/%s", keynumber,
+ value);
if (key.dptr == NULL) {
DEBUG(0, ("talloc_asprintf failed\n"));
status = NT_STATUS_NO_MEMORY;
goto fail;
}
- key.dsize = strlen(key.dptr)+1;
+ key.dsize += 1;
prim = tdb_fetch(tdb, key);
if (prim.dptr == NULL) {
@@ -214,13 +215,14 @@ static NTSTATUS set_keys(struct tdb_context *tdb,
NTSTATUS status;
TDB_DATA key;
- key.dptr = talloc_asprintf(keys, "KEY/%d/%s", i, keys[i]);
+ key.dsize = talloc_asprintf_len(keys, &key.dptr, "KEY/%d/%s",
+ i, keys[i]);
if (key.dptr == NULL) {
DEBUG(0, ("talloc_asprintf failed\n"));
TALLOC_FREE(keys);
return NT_STATUS_NO_MEMORY;
}
- key.dsize = strlen(key.dptr)+1;
+ key.dsize += 1;
if (tdb_store(tdb, key, primary_key, TDB_INSERT) < 0) {
status = map_ntstatus_from_tdb(tdb);
@@ -273,13 +275,14 @@ static NTSTATUS del_keys(struct tdb_context *tdb,
NTSTATUS status;
TDB_DATA key;
- key.dptr = talloc_asprintf(keys, "KEY/%d/%s", i, keys[i]);
+ key.dsize = talloc_asprintf_len(keys, &key.dptr, "KEY/%d/%s",
+ i, keys[i]);
if (key.dptr == NULL) {
DEBUG(0, ("talloc_asprintf failed\n"));
TALLOC_FREE(keys);
return NT_STATUS_NO_MEMORY;
}
- key.dsize = strlen(key.dptr)+1;
+ key.dsize += 1;
if (tdb_delete(tdb, key) < 0) {
status = map_ntstatus_from_tdb(tdb);