From 41304b3c5791be0a5492844a048784c4ef4acfe9 Mon Sep 17 00:00:00 2001 From: Andrew Tridgell Date: Tue, 4 Nov 2003 11:16:07 +0000 Subject: lsa_EnumSids() now works (This used to be commit 25a8692fede323b53240192e5d349b39fe0b7342) --- source4/torture/rpc/lsa.c | 77 +++++++++++++++++++++++++++++++++++++++++++---- 1 file changed, 71 insertions(+), 6 deletions(-) (limited to 'source4/torture/rpc') diff --git a/source4/torture/rpc/lsa.c b/source4/torture/rpc/lsa.c index a4062d1181..a542cad636 100644 --- a/source4/torture/rpc/lsa.c +++ b/source4/torture/rpc/lsa.c @@ -21,6 +21,39 @@ #include "includes.h" +/* + this really shouldn't be here .... +*/ +static char *lsa_sid_string_talloc(TALLOC_CTX *mem_ctx, struct dom_sid *sid) +{ + int i, ofs, maxlen; + uint32 ia; + char *ret; + + if (!sid) { + return talloc_asprintf(mem_ctx, "(NULL SID)"); + } + + maxlen = sid->num_auths * 11 + 25; + ret = talloc(mem_ctx, maxlen); + if (!ret) return NULL; + + ia = (sid->id_auth[5]) + + (sid->id_auth[4] << 8 ) + + (sid->id_auth[3] << 16) + + (sid->id_auth[2] << 24); + + ofs = snprintf(ret, maxlen, "S-%u-%lu", + (unsigned int)sid->sid_rev_num, (unsigned long)ia); + + for (i = 0; i < sid->num_auths; i++) { + ofs += snprintf(ret + ofs, maxlen - ofs, "-%lu", (unsigned long)sid->sub_auths[i]); + } + + return ret; +} + + static BOOL test_OpenPolicy(struct dcerpc_pipe *p) { struct lsa_ObjectAttribute attr; @@ -28,7 +61,7 @@ static BOOL test_OpenPolicy(struct dcerpc_pipe *p) struct lsa_QosInfo qos; NTSTATUS status; - printf("testing OpenPolicy\n"); + printf("\ntesting OpenPolicy\n"); qos.impersonation_level = 2; qos.context_mode = 1; @@ -54,14 +87,13 @@ static BOOL test_OpenPolicy(struct dcerpc_pipe *p) } -static BOOL test_OpenPolicy2(struct dcerpc_pipe *p) +static BOOL test_OpenPolicy2(struct dcerpc_pipe *p, struct policy_handle *handle) { struct lsa_ObjectAttribute attr; - struct policy_handle handle; struct lsa_QosInfo qos; NTSTATUS status; - printf("testing OpenPolicy2\n"); + printf("\ntesting OpenPolicy2\n"); qos.impersonation_level = 2; qos.context_mode = 1; @@ -77,7 +109,7 @@ static BOOL test_OpenPolicy2(struct dcerpc_pipe *p) "\\", &attr, SEC_RIGHTS_MAXIMUM_ALLOWED, - &handle); + handle); if (!NT_STATUS_IS_OK(status)) { printf("OpenPolicy2 failed - %s\n", nt_errstr(status)); return False; @@ -86,12 +118,41 @@ static BOOL test_OpenPolicy2(struct dcerpc_pipe *p) return True; } + +static BOOL test_EnumSids(struct dcerpc_pipe *p, + TALLOC_CTX *mem_ctx, + struct policy_handle *handle) +{ + NTSTATUS status; + struct dom_sid **sids; + uint32 num_entries = 100; + int i; + + printf("\ntesting EnumSids\n"); + + status = dcerpc_lsa_EnumSids(p, mem_ctx, handle, 0, &num_entries, &sids); + if (!NT_STATUS_IS_OK(status)) { + printf("EnumSids failed - %s\n", nt_errstr(status)); + return False; + } + + printf("Got %d sids\n", num_entries); + + for (i=0;i