s4:samldb LDB module - assign better memory contexts on two places
[mat/samba.git] / source4 / dsdb / samdb / ldb_modules / samldb.c
index 269952a896b5c2bb622300bd776ec4f4208fffb4..0e4d852d1562b243dfa68dceb0b7eaf64d997d5d 100644 (file)
@@ -361,6 +361,7 @@ static int samldb_rodc_add(struct samldb_ctx *ac)
        struct ldb_context *ldb = ldb_module_get_ctx(ac->module);
        unsigned krbtgt_number, i_start, i;
        int ret;
+       char *newpass;
 
        /* find a unused msDC-SecondaryKrbTgtNumber */
        i_start = generate_random() & 0xFFFF;
@@ -402,6 +403,16 @@ found:
                return ldb_operr(ldb);
        }
 
+       newpass = generate_random_password(ac, 128, 255);
+       if (newpass == NULL) {
+               return ldb_operr(ldb);
+       }
+
+       ret = ldb_msg_add_steal_string(ac->msg, "clearTextPassword", newpass);
+       if (ret != LDB_SUCCESS) {
+               return ldb_operr(ldb);
+       }
+
        return samldb_next_step(ac);
 }
 
@@ -710,7 +721,7 @@ static int samldb_fill_object(struct samldb_ctx *ac, const char *type)
                         * caller. Use the entry DN for it. */
                        ac->dn = ac->msg->dn;
 
-                       ret = samdb_msg_add_string(ldb, ac, ac->msg,
+                       ret = samdb_msg_add_string(ldb, ac->msg, ac->msg,
                                                   "defaultObjectCategory",
                                                   ldb_dn_get_linearized(ac->dn));
                        if (ret != LDB_SUCCESS) {
@@ -734,7 +745,7 @@ static int samldb_fill_object(struct samldb_ctx *ac, const char *type)
                if (!ldb_msg_find_element(ac->msg, "lDAPDisplayName")) {
                        /* the RDN has prefix "CN" */
                        ret = ldb_msg_add_string(ac->msg, "lDAPDisplayName",
-                               samdb_cn_to_lDAPDisplayName(ac,
+                               samdb_cn_to_lDAPDisplayName(ac->msg,
                                        (const char *) rdn_value->data));
                        if (ret != LDB_SUCCESS) {
                                ldb_oom(ldb);