svn commit: samba r12502 - in branches/SAMBA_4_0/source/torture/rpc: .

abartlet at samba.org abartlet at samba.org
Mon Dec 26 23:06:10 GMT 2005


Author: abartlet
Date: 2005-12-26 23:06:09 +0000 (Mon, 26 Dec 2005)
New Revision: 12502

WebSVN: http://websvn.samba.org/cgi-bin/viewcvs.cgi?view=rev&root=samba&rev=12502

Log:
A bit of work on the RPC-SAMR torture test.  Prove that ridToSid is
really as simple as it looks.

Andrew Bartlett

Modified:
   branches/SAMBA_4_0/source/torture/rpc/samr.c


Changeset:
Modified: branches/SAMBA_4_0/source/torture/rpc/samr.c
===================================================================
--- branches/SAMBA_4_0/source/torture/rpc/samr.c	2005-12-26 22:47:40 UTC (rev 12501)
+++ branches/SAMBA_4_0/source/torture/rpc/samr.c	2005-12-26 23:06:09 UTC (rev 12502)
@@ -1135,9 +1135,12 @@
 		if (policy_min_pw_len) /* try again with the right min password length */ {
 			ret = test_ChangePasswordUser3(p, mem_ctx, account_string, policy_min_pw_len, password);
 		} else {
-			printf("ChangePasswordUser3 failed - %s\n", nt_errstr(status));
+			printf("ChangePasswordUser3 failed (no min length known) - %s\n", nt_errstr(status));
 			ret = False;
 		}
+	} else if (NT_STATUS_EQUAL(status, NT_STATUS_PASSWORD_RESTRICTION)) {
+		printf("ChangePasswordUser3 failed: %s unacceptable as new password - %s\n", newpass, nt_errstr(status));
+		ret = False;
 	} else if (!NT_STATUS_IS_OK(status)) {
 		printf("ChangePasswordUser3 failed - %s\n", nt_errstr(status));
 		ret = False;
@@ -2752,21 +2755,38 @@
 }
 
 static BOOL test_RidToSid(struct dcerpc_pipe *p, TALLOC_CTX *mem_ctx,
+			  struct dom_sid *domain_sid,
 			  struct policy_handle *domain_handle)
 {
     	struct samr_RidToSid r;
 	NTSTATUS status;
 	BOOL ret = True;
+	struct dom_sid *calc_sid;
+	int rids[] = { 0, 42, 512, 10200 };
+	int i;
 
-	printf("Testing RidToSid\n");
+	for (i=0;i<ARRAY_SIZE(rids);i++) {
+	
+		printf("Testing RidToSid\n");
+		
+		calc_sid = dom_sid_dup(mem_ctx, domain_sid);
+		r.in.domain_handle = domain_handle;
+		r.in.rid = rids[i];
+		
+		status = dcerpc_samr_RidToSid(p, mem_ctx, &r);
+		if (!NT_STATUS_IS_OK(status)) {
+			printf("RidToSid for %d failed - %s\n", rids[i], nt_errstr(status));
+			ret = False;
+		} else {
+			calc_sid = dom_sid_add_rid(calc_sid, calc_sid, rids[i]);
 
-	r.in.domain_handle = domain_handle;
-	r.in.rid = 512;
-
-	status = dcerpc_samr_RidToSid(p, mem_ctx, &r);
-	if (!NT_STATUS_IS_OK(status)) {
-		printf("RidToSid failed - %s\n", nt_errstr(status));
-		ret = False;
+			if (!dom_sid_equal(calc_sid, r.out.sid)) {
+				printf("RidToSid for %d failed - got %s, expected %s\n", rids[i], 
+				       dom_sid_string(mem_ctx, r.out.sid), 
+				       dom_sid_string(mem_ctx, calc_sid));
+				ret = False;
+			}
+		}
 	}
 
 	return ret;
@@ -3005,7 +3025,7 @@
 	ret &= test_GetDisplayEnumerationIndex2(p, mem_ctx, &domain_handle);
 	ret &= test_GroupList(p, mem_ctx, &domain_handle);
 	ret &= test_TestPrivateFunctionsDomain(p, mem_ctx, &domain_handle);
-	ret &= test_RidToSid(p, mem_ctx, &domain_handle);
+	ret &= test_RidToSid(p, mem_ctx, sid, &domain_handle);
 	ret &= test_GetBootKeyInformation(p, mem_ctx, &domain_handle);
 
 	if (!policy_handle_empty(&user_handle) &&



More information about the samba-cvs mailing list