From: Pierre Schweitzer Date: Sat, 1 Jun 2019 11:44:55 +0000 (+0200) Subject: [NTOSKRNL] Implement ObpFreeDosDevicesProtection to free DACL X-Git-Tag: 0.4.14-dev~914 X-Git-Url: https://git.reactos.org/?p=reactos.git;a=commitdiff_plain;h=8f655f9466eca0f0c5d4719c1cccd032e4a14ae2 [NTOSKRNL] Implement ObpFreeDosDevicesProtection to free DACL --- diff --git a/ntoskrnl/ob/obname.c b/ntoskrnl/ob/obname.c index 6c996132d87..866ac748d84 100644 --- a/ntoskrnl/ob/obname.c +++ b/ntoskrnl/ob/obname.c @@ -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;