mirror of
https://github.com/reactos/reactos.git
synced 2024-12-29 10:35:28 +00:00
[MSV1_0]
- Code clean-up. - Take the user RID and pimary group RID from the user info data. svn path=/trunk/; revision=61460
This commit is contained in:
parent
40814c5eb2
commit
f0b87d5d81
1 changed files with 31 additions and 44 deletions
|
@ -257,7 +257,7 @@ BuildTokenUser(OUT PTOKEN_USER User,
|
|||
if (User->User.Sid == NULL)
|
||||
{
|
||||
ERR("Could not create the user SID\n");
|
||||
return STATUS_UNSUCCESSFUL;
|
||||
return STATUS_INSUFFICIENT_RESOURCES;
|
||||
}
|
||||
|
||||
User->User.Attributes = 0;
|
||||
|
@ -268,10 +268,26 @@ BuildTokenUser(OUT PTOKEN_USER User,
|
|||
|
||||
static
|
||||
NTSTATUS
|
||||
BuildTokenGroups(IN PSID AccountDomainSid,
|
||||
IN PLUID LogonId,
|
||||
OUT PTOKEN_GROUPS *Groups,
|
||||
OUT PSID *PrimaryGroupSid)
|
||||
BuildTokenPrimaryGroup(OUT PTOKEN_PRIMARY_GROUP PrimaryGroup,
|
||||
IN PSID AccountDomainSid,
|
||||
IN ULONG RelativeId)
|
||||
{
|
||||
PrimaryGroup->PrimaryGroup = AppendRidToSid(AccountDomainSid,
|
||||
RelativeId);
|
||||
if (PrimaryGroup->PrimaryGroup == NULL)
|
||||
{
|
||||
ERR("Could not create the primary group SID\n");
|
||||
return STATUS_INSUFFICIENT_RESOURCES;
|
||||
}
|
||||
|
||||
return STATUS_SUCCESS;
|
||||
}
|
||||
|
||||
|
||||
static
|
||||
NTSTATUS
|
||||
BuildTokenGroups(OUT PTOKEN_GROUPS *Groups,
|
||||
IN PSID AccountDomainSid)
|
||||
{
|
||||
SID_IDENTIFIER_AUTHORITY SystemAuthority = {SECURITY_NT_AUTHORITY};
|
||||
PTOKEN_GROUPS TokenGroups;
|
||||
|
@ -297,7 +313,6 @@ BuildTokenGroups(IN PSID AccountDomainSid,
|
|||
TokenGroups->Groups[GroupCount].Sid = Sid;
|
||||
TokenGroups->Groups[GroupCount].Attributes =
|
||||
SE_GROUP_ENABLED | SE_GROUP_ENABLED_BY_DEFAULT | SE_GROUP_MANDATORY;
|
||||
*PrimaryGroupSid = Sid;
|
||||
GroupCount++;
|
||||
|
||||
|
||||
|
@ -366,30 +381,6 @@ BuildTokenGroups(IN PSID AccountDomainSid,
|
|||
}
|
||||
|
||||
|
||||
static
|
||||
NTSTATUS
|
||||
BuildTokenPrimaryGroup(PTOKEN_PRIMARY_GROUP PrimaryGroup,
|
||||
PSID PrimaryGroupSid)
|
||||
{
|
||||
ULONG RidCount;
|
||||
ULONG Size;
|
||||
|
||||
RidCount = *RtlSubAuthorityCountSid(PrimaryGroupSid);
|
||||
Size = RtlLengthRequiredSid(RidCount);
|
||||
|
||||
PrimaryGroup->PrimaryGroup = DispatchTable.AllocateLsaHeap(Size);
|
||||
if (PrimaryGroup->PrimaryGroup == NULL)
|
||||
{
|
||||
return STATUS_INSUFFICIENT_RESOURCES;
|
||||
}
|
||||
|
||||
RtlCopyMemory(PrimaryGroup->PrimaryGroup,
|
||||
PrimaryGroupSid,
|
||||
Size);
|
||||
|
||||
return STATUS_SUCCESS;
|
||||
}
|
||||
|
||||
static
|
||||
NTSTATUS
|
||||
BuildTokenPrivileges(PTOKEN_PRIVILEGES *TokenPrivileges)
|
||||
|
@ -480,11 +471,9 @@ static
|
|||
NTSTATUS
|
||||
BuildTokenInformationBuffer(PLSA_TOKEN_INFORMATION_V1 *TokenInformation,
|
||||
PRPC_SID AccountDomainSid,
|
||||
ULONG RelativeId,
|
||||
PLUID LogonId)
|
||||
PSAMPR_USER_INFO_BUFFER UserInfo)
|
||||
{
|
||||
PLSA_TOKEN_INFORMATION_V1 Buffer = NULL;
|
||||
PSID PrimaryGroupSid = NULL;
|
||||
ULONG i;
|
||||
NTSTATUS Status = STATUS_SUCCESS;
|
||||
|
||||
|
@ -501,19 +490,18 @@ BuildTokenInformationBuffer(PLSA_TOKEN_INFORMATION_V1 *TokenInformation,
|
|||
|
||||
Status = BuildTokenUser(&Buffer->User,
|
||||
(PSID)AccountDomainSid,
|
||||
RelativeId);
|
||||
if (!NT_SUCCESS(Status))
|
||||
goto done;
|
||||
|
||||
Status = BuildTokenGroups((PSID)AccountDomainSid,
|
||||
LogonId,
|
||||
&Buffer->Groups,
|
||||
&PrimaryGroupSid);
|
||||
UserInfo->All.UserId);
|
||||
if (!NT_SUCCESS(Status))
|
||||
goto done;
|
||||
|
||||
Status = BuildTokenPrimaryGroup(&Buffer->PrimaryGroup,
|
||||
PrimaryGroupSid);
|
||||
(PSID)AccountDomainSid,
|
||||
UserInfo->All.PrimaryGroupId);
|
||||
if (!NT_SUCCESS(Status))
|
||||
goto done;
|
||||
|
||||
Status = BuildTokenGroups(&Buffer->Groups,
|
||||
(PSID)AccountDomainSid);
|
||||
if (!NT_SUCCESS(Status))
|
||||
goto done;
|
||||
|
||||
|
@ -1047,8 +1035,7 @@ LsaApLogonUser(IN PLSA_CLIENT_REQUEST ClientRequest,
|
|||
/* Build and fill the token information buffer */
|
||||
Status = BuildTokenInformationBuffer((PLSA_TOKEN_INFORMATION_V1*)TokenInformation,
|
||||
AccountDomainSid,
|
||||
RelativeIds.Element[0],
|
||||
LogonId);
|
||||
UserInfo);
|
||||
if (!NT_SUCCESS(Status))
|
||||
{
|
||||
TRACE("BuildTokenInformationBuffer failed (Status %08lx)\n", Status);
|
||||
|
|
Loading…
Reference in a new issue