1
0
mirror of https://github.com/samba-team/samba.git synced 2024-12-24 21:34:56 +03:00

r2833: - added a call to SamrQueryGroupMember for every group, and fix the

IDL so this works (the previous IDL was bogus)

- changed a hyper to uint64 after looking at output on cascade on sparc
(This used to be commit db1ed5675a)
This commit is contained in:
Andrew Tridgell 2004-10-07 03:47:38 +00:00 committed by Gerald (Jerry) Carter
parent 7b77ff3720
commit ed6a5a1e0e
2 changed files with 36 additions and 29 deletions

View File

@ -148,7 +148,7 @@
samr_Name comment;
samr_Name domain; /* domain name */
samr_Name primary; /* PDC name if this is a BDC */
HYPER_T sequence_num;
uint64 sequence_num;
uint32 unknown2;
uint32 role;
uint32 unknown3;
@ -190,17 +190,7 @@
} samr_DomInfo9;
typedef struct {
uint64 force_logoff_time;
samr_Name comment;
samr_Name domain;
samr_Name primary;
HYPER_T sequence_num;
uint32 unknown2; /* w2k3 returns 1 */
uint32 role;
uint32 unknown3; /* w2k3 returns 1 */
uint32 num_users;
uint32 num_groups;
uint32 num_aliases;
samr_DomInfo2 info2;
HYPER_T lockout_duration;
HYPER_T lockout_window;
uint16 lockout_threshold;
@ -405,10 +395,11 @@
} samr_GroupInfoDesciption;
typedef enum {
GroupInfoAll = 1,
GroupInfoName,
GroupInfoX,
GroupInfoDescription
GroupInfoAll = 1,
GroupInfoName = 2,
GroupInfoX = 3,
GroupInfoDescription = 4,
GroupInfoAll2 = 5
} GroupInfo;
typedef union {
@ -416,6 +407,7 @@
[case(GroupInfoName)] samr_Name name;
[case(GroupInfoX)] samr_GroupInfoX unknown;
[case(GroupInfoDescription)] samr_Name description;
[case(GroupInfoAll2)] samr_GroupInfoAll all2;
} samr_GroupInfo;
NTSTATUS samr_QueryGroupInfo(
@ -456,24 +448,15 @@
/************************/
/* Function 0x19 */
/*
this isn't really valid IDL, but it does work. I suspect
I need to do some more pidl work to get this really right
*/
typedef struct {
uint32 count;
uint32 v[count];
} samr_intArray;
typedef struct {
samr_intArray *rids;
samr_intArray *unknown7;
[size_is(count)] uint32 *rids;
[size_is(count)] uint32 *unknown;
} samr_ridArray;
NTSTATUS samr_QueryGroupMember(
[in,ref] policy_handle *group_handle,
[out] uint32 *count,
[out] samr_ridArray rids
[out] samr_ridArray *rids
);

View File

@ -1653,7 +1653,7 @@ static BOOL test_QueryGroupInfo(struct dcerpc_pipe *p, TALLOC_CTX *mem_ctx,
{
NTSTATUS status;
struct samr_QueryGroupInfo r;
uint16_t levels[] = {1, 2, 3, 4};
uint16_t levels[] = {1, 2, 3, 4, 5};
int i;
BOOL ret = True;
@ -1674,6 +1674,26 @@ static BOOL test_QueryGroupInfo(struct dcerpc_pipe *p, TALLOC_CTX *mem_ctx,
return ret;
}
static BOOL test_QueryGroupMember(struct dcerpc_pipe *p, TALLOC_CTX *mem_ctx,
struct policy_handle *handle)
{
NTSTATUS status;
struct samr_QueryGroupMember r;
BOOL ret = True;
printf("Testing QueryGroupMember\n");
r.in.group_handle = handle;
status = dcerpc_samr_QueryGroupMember(p, mem_ctx, &r);
if (!NT_STATUS_IS_OK(status)) {
printf("QueryGroupInfo failed - %s\n", nt_errstr(status));
ret = False;
}
return ret;
}
static BOOL test_SetGroupInfo(struct dcerpc_pipe *p, TALLOC_CTX *mem_ctx,
struct policy_handle *handle)
@ -1871,6 +1891,10 @@ static BOOL test_OpenGroup(struct dcerpc_pipe *p, TALLOC_CTX *mem_ctx,
ret = False;
}
if (!test_QueryGroupMember(p, mem_ctx, &group_handle)) {
ret = False;
}
if (!test_Close(p, mem_ctx, &group_handle)) {
ret = False;
}