From 054453b5849d97bb244e3e45b5d5f92155311f8b Mon Sep 17 00:00:00 2001 From: Andrew Tridgell Date: Sat, 22 May 2004 00:52:04 +0000 Subject: r811: make the ldb_modify REPLACE semantics better match LDAP (ie. no error on the attribute not existing and allow an empty replace) (This used to be commit 1418b667d9041430786089713eafee63dd7b4a28) --- source4/lib/ldb/ldb_tdb/ldb_tdb.c | 13 ++++++------- 1 file changed, 6 insertions(+), 7 deletions(-) (limited to 'source4/lib/ldb/ldb_tdb') diff --git a/source4/lib/ldb/ldb_tdb/ldb_tdb.c b/source4/lib/ldb/ldb_tdb/ldb_tdb.c index 09d1618ffc..d60504ff17 100644 --- a/source4/lib/ldb/ldb_tdb/ldb_tdb.c +++ b/source4/lib/ldb/ldb_tdb/ldb_tdb.c @@ -501,13 +501,12 @@ int ltdb_modify_internal(struct ldb_context *ldb, const struct ldb_message *msg) case LDB_FLAG_MOD_REPLACE: /* replace all elements of this attribute name with the elements - listed */ - if (msg_delete_attribute(ldb, &msg2, msg->elements[i].name) != 0) { - ltdb->last_err_string = "No such attribute"; - goto failed; - } - /* add the replacement element */ - if (msg_add_element(ldb, &msg2, &msg->elements[i]) != 0) { + listed. The attribute not existing is not an error */ + msg_delete_attribute(ldb, &msg2, msg->elements[i].name); + + /* add the replacement element, if not empty */ + if (msg->elements[i].num_values != 0 && + msg_add_element(ldb, &msg2, &msg->elements[i]) != 0) { goto failed; } break; -- cgit