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) &&
