s4-ldb: canonicalise the message on ldb_add
[kai/samba.git] / source4 / lib / ldb / common / ldb.c
index 91429c241504aaca4a071b793df357987778f9d2..94fd6cde1ebac1795fd787b2da333af1aa87b9c0 100644 (file)
@@ -779,6 +779,15 @@ int ldb_request(struct ldb_context *ldb, struct ldb_request *req)
                ret = module->ops->search(module, req);
                break;
        case LDB_ADD:
+               /* we have to canonicalise here, as so many places
+                * in modules and backends assume we don't have two
+                * elements with the same name */
+               req->op.add.message = ldb_msg_canonicalize(ldb, req->op.add.message);
+               if (!req->op.add.message) {
+                       ldb_oom(ldb);
+                       return LDB_ERR_OPERATIONS_ERROR;
+               }
+               talloc_steal(req, req->op.add.message);
                FIRST_OP(ldb, add);
                ret = module->ops->add(module, req);
                break;