diff --git a/source/lib/registry/ldb.c b/source/lib/registry/ldb.c index af9d14d..2f80ea9 100644 --- a/source/lib/registry/ldb.c +++ b/source/lib/registry/ldb.c @@ -469,7 +469,7 @@ static WERROR ldb_set_value(struct hive_key *parent, { struct ldb_message *msg; struct ldb_key_data *kd = talloc_get_type(parent, struct ldb_key_data); - int ret; + int i, ret; TALLOC_CTX *mem_ctx = talloc_init("ldb_set_value"); msg = reg_ldb_pack_value(kd->ldb, mem_ctx, name, type, data); @@ -479,6 +479,9 @@ static WERROR ldb_set_value(struct hive_key *parent, ret = ldb_add(kd->ldb, msg); if (ret != LDB_SUCCESS) { + for (i = 0; i < msg->num_elements; i++) { + msg->elements[i].flags = LDB_FLAG_MOD_REPLACE; + } ret = ldb_modify(kd->ldb, msg); if (ret != LDB_SUCCESS) { DEBUG(1, ("ldb_msg_add: %s\n", ldb_errstring(kd->ldb)));