svn commit: samba r4437 - in branches/SAMBA_4_0/source: librpc/idl
torture/rpc
tridge at samba.org
tridge at samba.org
Fri Dec 31 07:26:26 GMT 2004
Author: tridge
Date: 2004-12-31 07:26:26 +0000 (Fri, 31 Dec 2004)
New Revision: 4437
WebSVN: http://websvn.samba.org/cgi-bin/viewcvs.cgi?view=rev&root=samba&rev=4437
Log:
added IDL and test code for lsa_LookupSids3() and lsa_LookupNames3().
For some reason I am getting ACCESS_DENIED from w2k3 on
lsa_LookupSids3(). I will investigate.
Modified:
branches/SAMBA_4_0/source/librpc/idl/lsa.idl
branches/SAMBA_4_0/source/torture/rpc/lsa.c
Changeset:
Modified: branches/SAMBA_4_0/source/librpc/idl/lsa.idl
===================================================================
--- branches/SAMBA_4_0/source/librpc/idl/lsa.idl 2004-12-31 07:22:10 UTC (rev 4436)
+++ branches/SAMBA_4_0/source/librpc/idl/lsa.idl 2004-12-31 07:26:26 UTC (rev 4437)
@@ -792,9 +792,32 @@
/* Function 0x43 */
NTSTATUS lsa_CREDRPROFILELOADED();
+ /**********************/
/* Function 0x44 */
- NTSTATUS lsa_LSARLOOKUPNAMES3();
+ typedef struct {
+ uint16 sid_type;
+ dom_sid *sid;
+ uint32 sid_index;
+ uint32 unknown;
+ } lsa_TranslatedSid3;
+ typedef struct {
+ [range(0,1000)] uint32 count;
+ [size_is(count)] lsa_TranslatedSid3 *sids;
+ } lsa_TransSidArray3;
+
+ NTSTATUS lsa_LookupNames3 (
+ [in,ref] policy_handle *handle,
+ [in,range(0,1000)] uint32 num_names,
+ [in,ref,size_is(num_names)] lsa_String *names,
+ [out] lsa_RefDomainList *domains,
+ [in,out,ref] lsa_TransSidArray3 *sids,
+ [in] uint16 level,
+ [in,out,ref] uint32 *count,
+ [in] uint32 unknown1,
+ [in] uint32 unknown2
+ );
+
/* Function 0x45 */
NTSTATUS lsa_CREDRGETSESSIONTYPES();
@@ -816,9 +839,19 @@
/* Function 0x4b */
NTSTATUS lsa_CREDRRENAME();
+ /*****************/
/* Function 0x4c */
- NTSTATUS lsa_LSARLOOKUPSIDS3();
+ NTSTATUS lsa_LookupSids3(
+ [in,ref] lsa_SidArray *sids,
+ [out] lsa_RefDomainList *domains,
+ [in,out,ref] lsa_TransNameArray2 *names,
+ [in] uint16 level,
+ [in,out,ref] uint32 *count,
+ [in] uint32 unknown1,
+ [in] uint32 unknown2
+ );
+
/* Function 0x4d */
NTSTATUS lsa_LSARLOOKUPNAMES4();
Modified: branches/SAMBA_4_0/source/torture/rpc/lsa.c
===================================================================
--- branches/SAMBA_4_0/source/torture/rpc/lsa.c 2004-12-31 07:22:10 UTC (rev 4436)
+++ branches/SAMBA_4_0/source/torture/rpc/lsa.c 2004-12-31 07:26:26 UTC (rev 4437)
@@ -188,6 +188,51 @@
}
+static BOOL test_LookupNames3(struct dcerpc_pipe *p,
+ TALLOC_CTX *mem_ctx,
+ struct policy_handle *handle,
+ struct lsa_TransNameArray2 *tnames)
+{
+ struct lsa_LookupNames3 r;
+ struct lsa_TransSidArray3 sids;
+ struct lsa_String *names;
+ uint32_t count = 0;
+ NTSTATUS status;
+ int i;
+
+ printf("\nTesting LookupNames3 with %d names\n", tnames->count);
+
+ sids.count = 0;
+ sids.sids = NULL;
+
+ names = talloc_array_p(mem_ctx, struct lsa_String, tnames->count);
+ for (i=0;i<tnames->count;i++) {
+ init_lsa_String(&names[i], tnames->names[i].name.string);
+ }
+
+ r.in.handle = handle;
+ r.in.num_names = tnames->count;
+ r.in.names = names;
+ r.in.sids = &sids;
+ r.in.level = 1;
+ r.in.count = &count;
+ r.in.unknown1 = 0;
+ r.in.unknown2 = 0;
+ r.out.count = &count;
+ r.out.sids = &sids;
+
+ status = dcerpc_lsa_LookupNames3(p, mem_ctx, &r);
+ if (!NT_STATUS_IS_OK(status) && !NT_STATUS_EQUAL(status, STATUS_SOME_UNMAPPED)) {
+ printf("LookupNames3 failed - %s\n", nt_errstr(status));
+ return False;
+ }
+
+ printf("\n");
+
+ return True;
+}
+
+
static BOOL test_LookupSids(struct dcerpc_pipe *p,
TALLOC_CTX *mem_ctx,
struct policy_handle *handle,
@@ -267,6 +312,45 @@
return True;
}
+static BOOL test_LookupSids3(struct dcerpc_pipe *p,
+ TALLOC_CTX *mem_ctx,
+ struct policy_handle *handle,
+ struct lsa_SidArray *sids)
+{
+ struct lsa_LookupSids3 r;
+ struct lsa_TransNameArray2 names;
+ uint32_t count = sids->num_sids;
+ NTSTATUS status;
+
+ printf("\nTesting LookupSids3\n");
+
+ names.count = 0;
+ names.names = NULL;
+
+ r.in.sids = sids;
+ r.in.names = &names;
+ r.in.level = 1;
+ r.in.count = &count;
+ r.in.unknown1 = 0;
+ r.in.unknown2 = 0;
+ r.out.count = &count;
+ r.out.names = &names;
+
+ status = dcerpc_lsa_LookupSids3(p, mem_ctx, &r);
+ if (!NT_STATUS_IS_OK(status) && !NT_STATUS_EQUAL(status, STATUS_SOME_UNMAPPED)) {
+ printf("LookupSids3 failed - %s\n", nt_errstr(status));
+ return False;
+ }
+
+ printf("\n");
+
+ if (!test_LookupNames3(p, mem_ctx, handle, &names)) {
+ return False;
+ }
+
+ return True;
+}
+
static BOOL test_many_LookupSids(struct dcerpc_pipe *p,
TALLOC_CTX *mem_ctx,
struct policy_handle *handle)
@@ -789,6 +873,10 @@
return False;
}
+ if (!test_LookupSids3(p, mem_ctx, handle, &sids1)) {
+ return False;
+ }
+
printf("testing all accounts\n");
for (i=0;i<sids1.num_sids;i++) {
test_OpenAccount(p, mem_ctx, handle, sids1.sids[i].sid);
More information about the samba-cvs
mailing list