diff options
author | Volker Lendecke <vl@samba.org> | 2019-10-23 12:19:38 +0200 |
---|---|---|
committer | Jeremy Allison <jra@samba.org> | 2019-11-22 23:57:46 +0000 |
commit | ca8c23bb42e501d5fe7f47f6c59feb5e7524a0cf (patch) | |
tree | 917642bce18aa0fa0f294495c9ed41a27cdad4fb /lib/dbwrap | |
parent | ffe4933c776bc89ab8a6bb09f74288b8bf7b1310 (diff) | |
download | samba-ca8c23bb42e501d5fe7f47f6c59feb5e7524a0cf.tar.gz |
dbwrap: Don't set rec->value in dbwrap_do_locked()
We pass that via the callback now
Signed-off-by: Volker Lendecke <vl@samba.org>
Reviewed-by: Jeremy Allison <jra@samba.org>
Diffstat (limited to 'lib/dbwrap')
-rw-r--r-- | lib/dbwrap/dbwrap.c | 6 | ||||
-rw-r--r-- | lib/dbwrap/dbwrap_tdb.c | 8 |
2 files changed, 10 insertions, 4 deletions
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); |