[NTOSKRNL] Implement ObpFreeDosDevicesProtection to free DACL

This commit is contained in:
Pierre Schweitzer
2019-06-01 13:44:55 +02:00
parent 933dddeb07
commit 8f655f9466

View File

@@ -141,6 +141,22 @@ ObpGetDosDevicesProtection(OUT PSECURITY_DESCRIPTOR SecurityDescriptor)
return STATUS_SUCCESS;
}
INIT_FUNCTION
VOID
NTAPI
ObpFreeDosDevicesProtection(OUT PSECURITY_DESCRIPTOR SecurityDescriptor)
{
PACL Dacl;
NTSTATUS Status;
BOOLEAN DaclPresent, DaclDefaulted;
Status = RtlGetDaclSecurityDescriptor(SecurityDescriptor, &DaclPresent, &Dacl, &DaclDefaulted);
ASSERT(NT_SUCCESS(Status));
ASSERT(DaclPresent);
ASSERT(Dacl != NULL);
ExFreePoolWithTag(Dacl, 'lcaD');
}
INIT_FUNCTION
NTSTATUS
NTAPI
@@ -151,8 +167,6 @@ ObpCreateDosDevicesDirectory(VOID)
HANDLE Handle, SymHandle;
SECURITY_DESCRIPTOR DosDevicesSD;
NTSTATUS Status;
PACL Dacl;
BOOLEAN DaclPresent, DaclDefaulted;
/* Create a custom security descriptor for the global DosDevices directory */
Status = ObpGetDosDevicesProtection(&DosDevicesSD);
@@ -256,8 +270,7 @@ ObpCreateDosDevicesDirectory(VOID)
if (NT_SUCCESS(Status)) NtClose(SymHandle);
done:
RtlGetDaclSecurityDescriptor(&DosDevicesSD, &DaclPresent, &Dacl, &DaclDefaulted);
ExFreePoolWithTag(Dacl, 'lcaD');
ObpFreeDosDevicesProtection(&DosDevicesSD);
/* Return status */
return Status;