diff options
-rw-r--r-- | source4/lib/ldb/ldb_tdb/ldb_tdb.c | 13 |
1 files changed, 6 insertions, 7 deletions
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; |