const char *name;
struct ldb_message *msg;
int ret;
- const char *container, *obj_class=NULL;
+ const char *obj_class = NULL;
+ const char *wk_guid = NULL;
char *cn_name;
size_t cn_name_len;
/* This must be one of these values *only* */
if (acct_flags == ACB_NORMAL) {
- container = "CN=Users";
+ wk_guid = DS_GUID_USERS_CONTAINER;
obj_class = "user";
user_account_control = UF_NORMAL_ACCOUNT;
} else if (acct_flags == ACB_WSTRUST) {
return NT_STATUS_FOOBAR;
}
cn_name[cn_name_len - 1] = '\0';
- container = "CN=Computers";
+ wk_guid = DS_GUID_COMPUTERS_CONTAINER;
obj_class = "computer";
user_account_control = UF_WORKSTATION_TRUST_ACCOUNT;
return NT_STATUS_FOOBAR;
}
cn_name[cn_name_len - 1] = '\0';
- container = "OU=Domain Controllers";
+ wk_guid = DS_GUID_DOMAIN_CONTROLLERS_CONTAINER;
obj_class = "computer";
user_account_control = UF_SERVER_TRUST_ACCOUNT;
} else if (acct_flags == ACB_DOMTRUST) {
user_account_control |= UF_ACCOUNTDISABLE | UF_PASSWD_NOTREQD;
/* add core elements to the ldb_message for the user */
- msg->dn = ldb_dn_copy(msg, ldb_get_default_basedn(ldb));
- if ( ! ldb_dn_add_child_fmt(msg->dn, "CN=%s,%s", cn_name, container)) {
+ ret = dsdb_wellknown_dn(ldb, msg,
+ ldb_get_default_basedn(ldb),
+ wk_guid,
+ &msg->dn);
+ if (ret != LDB_SUCCESS) {
+ goto failed;
+ }
+ if ( ! ldb_dn_add_child_fmt(msg->dn, "CN=%s", cn_name)) {
ldb_transaction_cancel(ldb);
talloc_free(tmp_ctx);
return NT_STATUS_FOOBAR;