From 8082e2eb7e33c0993135791c03823886f5aa8496 Mon Sep 17 00:00:00 2001 From: Ralph Boehme Date: Fri, 29 Oct 2021 22:03:42 +0200 Subject: lib/dbwrap: reset deleted record to tdb_null This allows the calling the following sequence of dbwrap functions: dbwrap_delete_record(rec); data = dbwrap_record_get_value(rec); without triggering the assert rec->value_valid inside dbwrap_record_get_value(). Note that dbwrap_record_storev() continues to invalidate the record, so this change somewhat blurs our semantics. BUG: https://bugzilla.samba.org/show_bug.cgi?id=14882 Signed-off-by: Ralph Boehme Reviewed-by: Volker Lendecke Autobuild-User(master): Jeremy Allison Autobuild-Date(master): Thu Nov 4 19:49:47 UTC 2021 on sn-devel-184 --- lib/dbwrap/dbwrap.c | 9 +++------ selftest/knownfail.d/samba3.blackbox.smbXsrv_client_dead_rec | 1 - 2 files changed, 3 insertions(+), 7 deletions(-) delete mode 100644 selftest/knownfail.d/samba3.blackbox.smbXsrv_client_dead_rec diff --git a/lib/dbwrap/dbwrap.c b/lib/dbwrap/dbwrap.c index cc685a2fa69..7555efaa3ab 100644 --- a/lib/dbwrap/dbwrap.c +++ b/lib/dbwrap/dbwrap.c @@ -110,16 +110,13 @@ NTSTATUS dbwrap_record_delete(struct db_record *rec) { NTSTATUS status; - /* - * Invalidate before rec->delete_rec() is called, give - * rec->delete_rec() the chance to re-validate rec->value. - */ - rec->value_valid = false; - status = rec->delete_rec(rec); if (!NT_STATUS_IS_OK(status)) { return status; } + + rec->value = tdb_null; + return NT_STATUS_OK; } diff --git a/selftest/knownfail.d/samba3.blackbox.smbXsrv_client_dead_rec b/selftest/knownfail.d/samba3.blackbox.smbXsrv_client_dead_rec deleted file mode 100644 index 16f8446dcf9..00000000000 --- a/selftest/knownfail.d/samba3.blackbox.smbXsrv_client_dead_rec +++ /dev/null @@ -1 +0,0 @@ -^samba3.blackbox.smbXsrv_client_dead_rec.check_panic\(fileserver:local\) -- cgit v1.2.1