From 32de5979810f472d25f8efcd10c15719d48b7393 Mon Sep 17 00:00:00 2001 From: Andrew Tridgell Date: Sat, 22 May 2004 00:53:57 +0000 Subject: r812: added a new samdb_replace() call that simplifies the code in the main samr server a bit. (This used to be commit 255d6e77e705bb7a94e6738c9f48f9d8c625883c) --- source4/rpc_server/samr/samdb.c | 20 +++++++++++++++++++- 1 file changed, 19 insertions(+), 1 deletion(-) (limited to 'source4/rpc_server/samr/samdb.c') diff --git a/source4/rpc_server/samr/samdb.c b/source4/rpc_server/samr/samdb.c index c9d7d601b2..a0591af451 100644 --- a/source4/rpc_server/samr/samdb.c +++ b/source4/rpc_server/samr/samdb.c @@ -705,7 +705,9 @@ int samdb_msg_add_delete(void *ctx, TALLOC_CTX *mem_ctx, struct ldb_message *msg return -1; } ldb_set_alloc(sam_ctx->ldb, samdb_alloc, mem_ctx); - return ldb_msg_add_empty(sam_ctx->ldb, msg, a, LDB_FLAG_MOD_DELETE); + /* we use an empty replace rather than a delete, as it allows for + samdb_replace() to be used everywhere */ + return ldb_msg_add_empty(sam_ctx->ldb, msg, a, LDB_FLAG_MOD_REPLACE); } /* @@ -854,6 +856,22 @@ int samdb_modify(void *ctx, TALLOC_CTX *mem_ctx, struct ldb_message *msg) return ldb_modify(sam_ctx->ldb, msg); } +/* + replace elements in a record +*/ +int samdb_replace(void *ctx, TALLOC_CTX *mem_ctx, struct ldb_message *msg) +{ + int i; + + /* mark all the message elements as LDB_FLAG_MOD_REPLACE */ + for (i=0;inum_elements;i++) { + msg->elements[i].flags = LDB_FLAG_MOD_REPLACE; + } + + /* modify the samdb record */ + return samdb_modify(ctx, mem_ctx, msg); +} + /* check that a password is sufficiently complex */ -- cgit