[LSASRV] Add the SE_GROUP_OWNER attributes to the token owner.

This commit is contained in:
Hermès Bélusca-Maïto 2018-06-26 22:14:03 +02:00
parent 9594022ce1
commit 0208a4d196
No known key found for this signature in database
GPG key ID: 3B2539C65E7B93D0

View file

@ -1137,7 +1137,7 @@ LsapSetTokenOwner(
IN LSA_TOKEN_INFORMATION_TYPE TokenInformationType) IN LSA_TOKEN_INFORMATION_TYPE TokenInformationType)
{ {
PLSA_TOKEN_INFORMATION_V1 TokenInfo1; PLSA_TOKEN_INFORMATION_V1 TokenInfo1;
PSID OwnerSid = NULL; PSID_AND_ATTRIBUTES OwnerSid = NULL;
ULONG i, Length; ULONG i, Length;
if (TokenInformationType == LsaTokenInformationV1) if (TokenInformationType == LsaTokenInformationV1)
@ -1147,24 +1147,25 @@ LsapSetTokenOwner(
if (TokenInfo1->Owner.Owner != NULL) if (TokenInfo1->Owner.Owner != NULL)
return STATUS_SUCCESS; return STATUS_SUCCESS;
OwnerSid = TokenInfo1->User.User.Sid; OwnerSid = &TokenInfo1->User.User;
for (i = 0; i < TokenInfo1->Groups->GroupCount; i++) for (i = 0; i < TokenInfo1->Groups->GroupCount; i++)
{ {
if (EqualSid(TokenInfo1->Groups->Groups[i].Sid, LsapAdministratorsSid)) if (EqualSid(TokenInfo1->Groups->Groups[i].Sid, LsapAdministratorsSid))
{ {
OwnerSid = LsapAdministratorsSid; OwnerSid = &TokenInfo1->Groups->Groups[i];
break; break;
} }
} }
Length = RtlLengthSid(OwnerSid); Length = RtlLengthSid(OwnerSid->Sid);
TokenInfo1->Owner.Owner = DispatchTable.AllocateLsaHeap(Length); TokenInfo1->Owner.Owner = DispatchTable.AllocateLsaHeap(Length);
if (TokenInfo1->Owner.Owner == NULL) if (TokenInfo1->Owner.Owner == NULL)
return STATUS_INSUFFICIENT_RESOURCES; return STATUS_INSUFFICIENT_RESOURCES;
RtlCopyMemory(TokenInfo1->Owner.Owner, RtlCopyMemory(TokenInfo1->Owner.Owner,
OwnerSid, OwnerSid->Sid,
Length); Length);
OwnerSid->Attributes |= SE_GROUP_OWNER;
} }
return STATUS_SUCCESS; return STATUS_SUCCESS;