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

r16773: Fix one more RPC-SAMR test (an alias level), and make it clear that

the unknown value in the samr_GroupInfo structures are the group
attributes.

Andrew Bartlett
This commit is contained in:
Andrew Bartlett 2006-07-03 04:00:10 +00:00 committed by Gerald (Jerry) Carter
parent fee0716143
commit c50095efab
2 changed files with 19 additions and 13 deletions

View File

@ -388,8 +388,8 @@
} samr_GroupInfoAll;
typedef struct {
uint32 unknown;
} samr_GroupInfoX;
samr_GroupAttrs attributes;
} samr_GroupInfoAttributes;
typedef struct {
lsa_String description;
@ -398,17 +398,17 @@
typedef enum {
GROUPINFOALL = 1,
GROUPINFONAME = 2,
GROUPINFOX = 3,
GROUPINFOATTRIBUTES = 3,
GROUPINFODESCRIPTION = 4,
GROUPINFOALL2 = 5
} samr_GroupInfoEnum;
typedef [switch_type(samr_GroupInfoEnum)] union {
[case(GROUPINFOALL)] samr_GroupInfoAll all;
[case(GROUPINFONAME)] lsa_String name;
[case(GROUPINFOX)] samr_GroupInfoX unknown;
[case(GROUPINFODESCRIPTION)] lsa_String description;
[case(GROUPINFOALL2)] samr_GroupInfoAll all2;
[case(GROUPINFOALL)] samr_GroupInfoAll all;
[case(GROUPINFONAME)] lsa_String name;
[case(GROUPINFOATTRIBUTES)] samr_GroupInfoAttributes attributes;
[case(GROUPINFODESCRIPTION)] lsa_String description;
[case(GROUPINFOALL2)] samr_GroupInfoAll all2;
} samr_GroupInfo;
NTSTATUS samr_QueryGroupInfo(

View File

@ -1642,19 +1642,25 @@ static NTSTATUS samr_QueryGroupInfo(struct dcesrv_call_state *dce_call, TALLOC_C
switch (r->in.level) {
case GROUPINFOALL:
QUERY_STRING(msg, all.name.string, "sAMAccountName");
r->out.info->all.attributes = 7; /* Do like w2k3 */
r->out.info->all.attributes = SE_GROUP_MANDATORY | SE_GROUP_ENABLED_BY_DEFAULT | SE_GROUP_ENABLED; /* Do like w2k3 */
QUERY_UINT (msg, all.num_members, "numMembers")
QUERY_STRING(msg, all.description.string, "description");
break;
case GROUPINFONAME:
QUERY_STRING(msg, name.string, "sAMAccountName");
break;
case GROUPINFOX:
r->out.info->unknown.unknown = 7;
case GROUPINFOATTRIBUTES:
r->out.info->attributes.attributes = SE_GROUP_MANDATORY | SE_GROUP_ENABLED_BY_DEFAULT | SE_GROUP_ENABLED; /* Do like w2k3 */
break;
case GROUPINFODESCRIPTION:
QUERY_STRING(msg, description.string, "description");
break;
case GROUPINFOALL2:
QUERY_STRING(msg, all2.name.string, "sAMAccountName");
r->out.info->all.attributes = SE_GROUP_MANDATORY | SE_GROUP_ENABLED_BY_DEFAULT | SE_GROUP_ENABLED; /* Do like w2k3 */
QUERY_UINT (msg, all2.num_members, "numMembers")
QUERY_STRING(msg, all2.description.string, "description");
break;
default:
r->out.info = NULL;
return NT_STATUS_INVALID_INFO_CLASS;
@ -1698,7 +1704,7 @@ static NTSTATUS samr_SetGroupInfo(struct dcesrv_call_state *dce_call, TALLOC_CTX
* sAMAccountName attribute */
SET_STRING(msg, name.string, "sAMAccountName");
break;
case GROUPINFOX:
case GROUPINFOATTRIBUTES:
/* This does not do anything obviously visible in W2k3 LDAP */
break;
default:
@ -3193,7 +3199,7 @@ static NTSTATUS samr_TestPrivateFunctionsDomain(struct dcesrv_call_state *dce_ca
static NTSTATUS samr_TestPrivateFunctionsUser(struct dcesrv_call_state *dce_call, TALLOC_CTX *mem_ctx,
struct samr_TestPrivateFunctionsUser *r)
{
DCESRV_FAULT(DCERPC_FAULT_OP_RNG_ERROR);
return NT_STATUS_NOT_IMPLEMENTED;
}