dbwrap_rbt: support TDB_INSERT and TDB_MODIFY store flags
authorDavid Disseldorp <ddiss@samba.org>
Tue, 9 Jun 2020 13:46:51 +0000 (15:46 +0200)
committerJeremy Allison <jra@samba.org>
Wed, 10 Jun 2020 19:08:40 +0000 (19:08 +0000)
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>
lib/dbwrap/dbwrap_rbt.c

index d988ca776de2246eb85cb6f0b06889e4c0d634bc..db456dfffba1ba25c02e07ff686003e6e6868a7e 100644 (file)
@@ -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 {