svn commit: samba r8370 - in
branches/SAMBA_4_0/source/rpc_server/samr: .
metze at samba.org
metze at samba.org
Tue Jul 12 10:59:12 GMT 2005
Author: metze
Date: 2005-07-12 10:59:12 +0000 (Tue, 12 Jul 2005)
New Revision: 8370
WebSVN: http://websvn.samba.org/cgi-bin/viewcvs.cgi?view=rev&root=samba&rev=8370
Log:
remove the '$' from in the cn: attribute for computer and dc accounts
metze
Modified:
branches/SAMBA_4_0/source/rpc_server/samr/dcesrv_samr.c
Changeset:
Modified: branches/SAMBA_4_0/source/rpc_server/samr/dcesrv_samr.c
===================================================================
--- branches/SAMBA_4_0/source/rpc_server/samr/dcesrv_samr.c 2005-07-12 10:38:45 UTC (rev 8369)
+++ branches/SAMBA_4_0/source/rpc_server/samr/dcesrv_samr.c 2005-07-12 10:59:12 UTC (rev 8370)
@@ -660,7 +660,9 @@
const char *account_name;
struct dcesrv_handle *u_handle;
int ret;
- const char *container, *class=NULL;
+ const char *container, *obj_class=NULL;
+ char *cn_name;
+ int cn_name_len;
ZERO_STRUCTP(r->out.user_handle);
*r->out.access_granted = 0;
@@ -689,34 +691,46 @@
return NT_STATUS_NO_MEMORY;
}
+ cn_name = talloc_strdup(mem_ctx, account_name);
+ NT_STATUS_HAVE_NO_MEMORY(cn_name);
+ cn_name_len = strlen(cn_name);
+
/* This must be one of these values *only* */
if (r->in.acct_flags == ACB_NORMAL) {
container = "Users";
- class = "user";
+ obj_class = "user";
} else if (r->in.acct_flags == ACB_WSTRUST) {
+ if (cn_name[cn_name_len - 1] != '$') {
+ return NT_STATUS_FOOBAR;
+ }
+ cn_name[cn_name_len - 1] = '\0';
container = "Computers";
- class = "computer";
+ obj_class = "computer";
} else if (r->in.acct_flags == ACB_SVRTRUST) {
+ if (cn_name[cn_name_len - 1] != '$') {
+ return NT_STATUS_FOOBAR;
+ }
+ cn_name[cn_name_len - 1] = '\0';
container = "Domain Controllers";
- class = "computer";
+ obj_class = "computer";
} else if (r->in.acct_flags == ACB_DOMTRUST) {
container = "Users";
- class = "computer";
+ obj_class = "user";
} else {
return NT_STATUS_INVALID_PARAMETER;
}
/* add core elements to the ldb_message for the user */
- msg->dn = talloc_asprintf(mem_ctx, "CN=%s,CN=%s,%s", account_name, container, d_state->domain_dn);
+ msg->dn = talloc_asprintf(mem_ctx, "CN=%s,CN=%s,%s", cn_name, container, d_state->domain_dn);
if (!msg->dn) {
return NT_STATUS_NO_MEMORY;
}
samdb_msg_add_string(d_state->sam_ctx, mem_ctx, msg, "sAMAccountName", account_name);
- samdb_msg_add_string(d_state->sam_ctx, mem_ctx, msg, "objectClass", class);
+ samdb_msg_add_string(d_state->sam_ctx, mem_ctx, msg, "objectClass", obj_class);
/* create the user */
ret = samdb_add(d_state->sam_ctx, mem_ctx, msg);
if (ret != 0) {
More information about the samba-cvs
mailing list