summaryrefslogtreecommitdiff
path: root/lib/dbwrap
diff options
context:
space:
mode:
authorDavid Disseldorp <ddiss@samba.org>2020-06-09 15:46:51 +0200
committerJeremy Allison <jra@samba.org>2020-06-10 19:08:40 +0000
commitc5b10466c30759aabd472bb1baa4a5bd2540215d (patch)
treec9a9381e31520407452dbfab1127bcb2e436bad6 /lib/dbwrap
parentf501881a1c27a2aa070e5b2848749fa7d8f115ba (diff)
downloadsamba-c5b10466c30759aabd472bb1baa4a5bd2540215d.tar.gz
dbwrap_rbt: support TDB_INSERT and TDB_MODIFY store flags
These flags provide insert-new and overwrite-existing record semantics respectively. Signed-off-by: David Disseldorp <ddiss@samba.org> Reviewed-by: Jeremy Allison <jra@samba.org>
Diffstat (limited to 'lib/dbwrap')
-rw-r--r--lib/dbwrap/dbwrap_rbt.c8
1 files changed, 8 insertions, 0 deletions
diff --git a/lib/dbwrap/dbwrap_rbt.c b/lib/dbwrap/dbwrap_rbt.c
index d988ca776de..db456dfffba 100644
--- a/lib/dbwrap/dbwrap_rbt.c
+++ b/lib/dbwrap/dbwrap_rbt.c
@@ -138,6 +138,14 @@ static NTSTATUS db_rbt_storev(struct db_record *rec,
return NT_STATUS_MEDIA_WRITE_PROTECTED;
}
+ if ((flag == TDB_INSERT) && (rec_priv->node != NULL)) {
+ return NT_STATUS_OBJECT_NAME_COLLISION;
+ }
+
+ if ((flag == TDB_MODIFY) && (rec_priv->node == NULL)) {
+ return NT_STATUS_OBJECT_NAME_NOT_FOUND;
+ }
+
if (num_dbufs == 1) {
data = dbufs[0];
} else {