From: David Disseldorp Date: Tue, 9 Jun 2020 13:46:51 +0000 (+0200) Subject: dbwrap_rbt: support TDB_INSERT and TDB_MODIFY store flags X-Git-Tag: ldb-2.2.0~156 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=c5b10466c30759aabd472bb1baa4a5bd2540215d;p=thirdparty%2Fsamba.git 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 Reviewed-by: Jeremy Allison --- 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 {