svn commit: samba r23366 - in branches/SAMBA_4_0_RELEASE/source:
rpc_server/samr torture/rpc
abartlet at samba.org
abartlet at samba.org
Wed Jun 6 12:52:48 GMT 2007
Author: abartlet
Date: 2007-06-06 12:52:48 +0000 (Wed, 06 Jun 2007)
New Revision: 23366
WebSVN: http://websvn.samba.org/cgi-bin/viewcvs.cgi?view=rev&root=samba&rev=23366
Log:
Merge from SAMBA_4_0:
Try to make Windows Vista join again. On my new test environment, it
wants to check for an existing domain join account, and fails. This
test shows that we need to return NT_STATUS_NONE_MAPPED when nothing
matches. (not yet tested if this helps vista).
Modified:
branches/SAMBA_4_0_RELEASE/source/rpc_server/samr/dcesrv_samr.c
branches/SAMBA_4_0_RELEASE/source/torture/rpc/samr.c
Changeset:
Modified: branches/SAMBA_4_0_RELEASE/source/rpc_server/samr/dcesrv_samr.c
===================================================================
--- branches/SAMBA_4_0_RELEASE/source/rpc_server/samr/dcesrv_samr.c 2007-06-06 12:51:45 UTC (rev 23365)
+++ branches/SAMBA_4_0_RELEASE/source/rpc_server/samr/dcesrv_samr.c 2007-06-06 12:52:48 UTC (rev 23366)
@@ -1783,7 +1783,7 @@
{
struct dcesrv_handle *h;
struct samr_domain_state *d_state;
- int i;
+ int i, num_mapped;
NTSTATUS status = NT_STATUS_OK;
const char * const attrs[] = { "sAMAccountType", "objectSid", NULL };
int count;
@@ -1807,6 +1807,8 @@
r->out.rids.count = r->in.num_names;
r->out.types.count = r->in.num_names;
+ num_mapped = 0;
+
for (i=0;i<r->in.num_names;i++) {
struct ldb_message **res;
struct dom_sid *sid;
@@ -1844,9 +1846,12 @@
r->out.rids.ids[i] = sid->sub_auths[sid->num_auths-1];
r->out.types.ids[i] = rtype;
+ num_mapped++;
}
-
+ if (num_mapped == 0) {
+ return NT_STATUS_NONE_MAPPED;
+ }
return status;
}
Modified: branches/SAMBA_4_0_RELEASE/source/torture/rpc/samr.c
===================================================================
--- branches/SAMBA_4_0_RELEASE/source/torture/rpc/samr.c 2007-06-06 12:51:45 UTC (rev 23365)
+++ branches/SAMBA_4_0_RELEASE/source/torture/rpc/samr.c 2007-06-06 12:52:48 UTC (rev 23366)
@@ -922,17 +922,43 @@
status = dcerpc_samr_LookupNames(p, mem_ctx, &n);
if (!NT_STATUS_EQUAL(status, STATUS_SOME_UNMAPPED)) {
printf("LookupNames[2] failed - %s\n", nt_errstr(status));
+ if (NT_STATUS_IS_OK(status)) {
+ return NT_STATUS_UNSUCCESSFUL;
+ }
return status;
}
- init_lsa_String(&sname[1], "xxNONAMExx");
n.in.num_names = 0;
status = dcerpc_samr_LookupNames(p, mem_ctx, &n);
if (!NT_STATUS_IS_OK(status)) {
printf("LookupNames[0] failed - %s\n", nt_errstr(status));
+ return status;
}
- return status;
+ init_lsa_String(&sname[0], "xxNONAMExx");
+ n.in.num_names = 1;
+ status = dcerpc_samr_LookupNames(p, mem_ctx, &n);
+ if (!NT_STATUS_EQUAL(status, NT_STATUS_NONE_MAPPED)) {
+ printf("LookupNames[1 bad name] failed - %s\n", nt_errstr(status));
+ if (NT_STATUS_IS_OK(status)) {
+ return NT_STATUS_UNSUCCESSFUL;
+ }
+ return status;
+ }
+
+ init_lsa_String(&sname[0], "xxNONAMExx");
+ init_lsa_String(&sname[1], "xxNONAME2xx");
+ n.in.num_names = 2;
+ status = dcerpc_samr_LookupNames(p, mem_ctx, &n);
+ if (!NT_STATUS_EQUAL(status, NT_STATUS_NONE_MAPPED)) {
+ printf("LookupNames[2 bad names] failed - %s\n", nt_errstr(status));
+ if (NT_STATUS_IS_OK(status)) {
+ return NT_STATUS_UNSUCCESSFUL;
+ }
+ return status;
+ }
+
+ return NT_STATUS_OK;
}
static NTSTATUS test_OpenUser_byname(struct dcerpc_pipe *p, TALLOC_CTX *mem_ctx,
More information about the samba-cvs
mailing list