From ca8c23bb42e501d5fe7f47f6c59feb5e7524a0cf Mon Sep 17 00:00:00 2001 From: Volker Lendecke Date: Wed, 23 Oct 2019 12:19:38 +0200 Subject: dbwrap: Don't set rec->value in dbwrap_do_locked() We pass that via the callback now Signed-off-by: Volker Lendecke Reviewed-by: Jeremy Allison --- lib/dbwrap/dbwrap.c | 6 ++++++ lib/dbwrap/dbwrap_tdb.c | 8 ++++---- 2 files changed, 10 insertions(+), 4 deletions(-) (limited to 'lib/dbwrap') diff --git a/lib/dbwrap/dbwrap.c b/lib/dbwrap/dbwrap.c index 33f0b91ea03..baab0338088 100644 --- a/lib/dbwrap/dbwrap.c +++ b/lib/dbwrap/dbwrap.c @@ -562,6 +562,12 @@ NTSTATUS dbwrap_do_locked(struct db_context *db, TDB_DATA key, return NT_STATUS_NO_MEMORY; } + /* + * Invalidate rec->value, nobody shall assume it's set from + * within dbwrap_do_locked(). + */ + rec->value_valid = false; + fn(rec, rec->value, private_data); TALLOC_FREE(rec); diff --git a/lib/dbwrap/dbwrap_tdb.c b/lib/dbwrap/dbwrap_tdb.c index e855f1ed2d6..74b895a7736 100644 --- a/lib/dbwrap/dbwrap_tdb.c +++ b/lib/dbwrap/dbwrap_tdb.c @@ -214,14 +214,14 @@ static NTSTATUS db_tdb_do_locked(struct db_context *db, TDB_DATA key, rec = (struct db_record) { .db = db, .key = key, - .value = (struct TDB_DATA) { .dptr = buf, - .dsize = talloc_get_size(buf) }, - .value_valid = true, + .value_valid = false, .storev = db_tdb_storev, .delete_rec = db_tdb_delete, .private_data = ctx }; - fn(&rec, rec.value, private_data); + fn(&rec, + (TDB_DATA) { .dptr = buf, .dsize = talloc_get_size(buf) }, + private_data); tdb_chainunlock(ctx->wtdb->tdb, key); -- cgit v1.2.1