mirror of
https://github.com/reactos/reactos.git
synced 2025-07-23 10:33:48 +00:00
[BASESRV-CSRSRV]
A little bit of code reorganization (more a "matter of taste"; delete allocated pointers in the reverse way we allocated them). [NTDLL] - Free a used SID (i.e. fix a memory leak). - Only just "reserve" memory pages for the section for the CSR port. Memory will be actually committed later on (checked on Windows Server 2003 and on http://j00ru.vexillium.org/?p=527 ). svn path=/branches/ros-csrss/; revision=58716
This commit is contained in:
parent
463b98e376
commit
74ef4033a2
4 changed files with 29 additions and 36 deletions
|
@ -221,7 +221,7 @@ CsrpConnectToServer(IN PWSTR ObjectDirectory)
|
|||
NULL,
|
||||
&CsrSectionViewSize,
|
||||
PAGE_READWRITE,
|
||||
SEC_COMMIT,
|
||||
SEC_RESERVE,
|
||||
NULL);
|
||||
if (!NT_SUCCESS(Status))
|
||||
{
|
||||
|
@ -250,16 +250,16 @@ CsrpConnectToServer(IN PWSTR ObjectDirectory)
|
|||
|
||||
/* Create a SID for us */
|
||||
Status = RtlAllocateAndInitializeSid(&NtSidAuthority,
|
||||
1,
|
||||
SECURITY_LOCAL_SYSTEM_RID,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
&SystemSid);
|
||||
1,
|
||||
SECURITY_LOCAL_SYSTEM_RID,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
&SystemSid);
|
||||
if (!NT_SUCCESS(Status))
|
||||
{
|
||||
/* Failure */
|
||||
|
@ -278,6 +278,7 @@ CsrpConnectToServer(IN PWSTR ObjectDirectory)
|
|||
NULL,
|
||||
&ConnectionInfo,
|
||||
&ConnectionInfoLength);
|
||||
RtlFreeSid(SystemSid);
|
||||
NtClose(CsrSectionHandle);
|
||||
if (!NT_SUCCESS(Status))
|
||||
{
|
||||
|
|
|
@ -420,8 +420,8 @@ CSR_API(BaseSrvDefineDosDevice)
|
|||
&AdminSid);
|
||||
|
||||
SidLength = RtlLengthSid(SystemSid) +
|
||||
RtlLengthSid(AdminSid) +
|
||||
RtlLengthSid(WorldSid);
|
||||
RtlLengthSid(AdminSid) +
|
||||
RtlLengthSid(WorldSid);
|
||||
Length = sizeof(ACL) + SidLength + 3 * sizeof(ACCESS_ALLOWED_ACE);
|
||||
|
||||
SecurityDescriptor = RtlAllocateHeap(BaseSrvHeap,
|
||||
|
|
|
@ -202,9 +202,9 @@ CreateBaseAcls(OUT PACL* Dacl,
|
|||
|
||||
/* Allocate one ACL with 3 ACEs each for one SID */
|
||||
AclLength = sizeof(ACL) + 3 * sizeof(ACCESS_ALLOWED_ACE) +
|
||||
RtlLengthSid(SystemSid) +
|
||||
RtlLengthSid(RestrictedSid) +
|
||||
RtlLengthSid(WorldSid);
|
||||
RtlLengthSid(SystemSid) +
|
||||
RtlLengthSid(WorldSid) +
|
||||
RtlLengthSid(RestrictedSid);
|
||||
*Dacl = RtlAllocateHeap(BaseSrvHeap, 0, AclLength);
|
||||
ASSERT(*Dacl != NULL);
|
||||
|
||||
|
@ -239,9 +239,9 @@ CreateBaseAcls(OUT PACL* Dacl,
|
|||
ASSERT(NT_SUCCESS(Status));
|
||||
|
||||
/* The SIDs are captured, can free them now */
|
||||
RtlFreeHeap(BaseSrvHeap, 0, SystemSid);
|
||||
RtlFreeHeap(BaseSrvHeap, 0, WorldSid);
|
||||
RtlFreeHeap(BaseSrvHeap, 0, RestrictedSid);
|
||||
RtlFreeSid(RestrictedSid);
|
||||
RtlFreeSid(WorldSid);
|
||||
RtlFreeSid(SystemSid);
|
||||
return Status;
|
||||
}
|
||||
|
||||
|
|
|
@ -350,10 +350,10 @@ GetDosDevicesProtection(OUT PSECURITY_DESCRIPTOR DosDevicesSd)
|
|||
/* FIXME: semi-failure cases! Quickie: */
|
||||
Quickie:
|
||||
/* Free the SIDs */
|
||||
RtlFreeSid(SystemSid);
|
||||
RtlFreeSid(WorldSid);
|
||||
RtlFreeSid(AdminSid);
|
||||
RtlFreeSid(CreatorSid);
|
||||
RtlFreeSid(AdminSid);
|
||||
RtlFreeSid(WorldSid);
|
||||
RtlFreeSid(SystemSid);
|
||||
|
||||
/* Return */
|
||||
return Status;
|
||||
|
@ -820,32 +820,24 @@ CsrCreateLocalSystemSD(OUT PSECURITY_DESCRIPTOR *LocalSystemSd)
|
|||
|
||||
/* Now create the SD itself */
|
||||
Status = RtlCreateSecurityDescriptor(SystemSd, SECURITY_DESCRIPTOR_REVISION);
|
||||
if (!NT_SUCCESS(Status))
|
||||
{
|
||||
/* Fail */
|
||||
RtlFreeHeap(CsrHeap, 0, SystemSd);
|
||||
return Status;
|
||||
}
|
||||
if (!NT_SUCCESS(Status)) goto Quit;
|
||||
|
||||
/* Create the DACL for it */
|
||||
RtlCreateAcl(Dacl, Length, ACL_REVISION2);
|
||||
|
||||
/* Create the ACE */
|
||||
Status = RtlAddAccessAllowedAce(Dacl, ACL_REVISION, PORT_ALL_ACCESS, SystemSid);
|
||||
if (!NT_SUCCESS(Status))
|
||||
{
|
||||
/* Fail */
|
||||
RtlFreeHeap(CsrHeap, 0, SystemSd);
|
||||
return Status;
|
||||
}
|
||||
if (!NT_SUCCESS(Status)) goto Quit;
|
||||
|
||||
/* Clear the DACL in the SD */
|
||||
Status = RtlSetDaclSecurityDescriptor(SystemSd, TRUE, Dacl, FALSE);
|
||||
if (!NT_SUCCESS(Status)) goto Quit;
|
||||
|
||||
Quit:
|
||||
if (!NT_SUCCESS(Status))
|
||||
{
|
||||
/* Fail */
|
||||
RtlFreeHeap(CsrHeap, 0, SystemSd);
|
||||
return Status;
|
||||
SystemSd = NULL;
|
||||
}
|
||||
|
||||
/* Free the SID and return*/
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue