diff --git a/reactos/drivers/filesystems/npfs/create.c b/reactos/drivers/filesystems/npfs/create.c index 4be56c67c79..04fdfe85d9c 100644 --- a/reactos/drivers/filesystems/npfs/create.c +++ b/reactos/drivers/filesystems/npfs/create.c @@ -736,12 +736,12 @@ NpCreateNewNamedPipe(IN PNP_DCB Dcb, } SecurityContext = &AccessState->SubjectSecurityContext; - SeLockSubjectContext(&AccessState->SubjectSecurityContext); + SeLockSubjectContext(SecurityContext); - Status = SeAssignSecurity(0, + Status = SeAssignSecurity(NULL, AccessState->SecurityDescriptor, &SecurityDescriptor, - 0, + FALSE, SecurityContext, IoGetFileObjectGenericMapping(), PagedPool); @@ -756,7 +756,7 @@ NpCreateNewNamedPipe(IN PNP_DCB Dcb, Status = ObLogSecurityDescriptor(SecurityDescriptor, &CachedSecurityDescriptor, 1); - ExFreePool(SecurityDescriptor); + ExFreePoolWithTag(SecurityDescriptor, 0); if (!NT_SUCCESS(Status)) { diff --git a/reactos/drivers/filesystems/npfs/secursup.c b/reactos/drivers/filesystems/npfs/secursup.c index f2a99b432cf..60581e1aa85 100644 --- a/reactos/drivers/filesystems/npfs/secursup.c +++ b/reactos/drivers/filesystems/npfs/secursup.c @@ -108,15 +108,19 @@ NpInitializeSecurity(IN PNP_CCB Ccb, return Status; } - ClientContext = ExAllocatePoolWithTag(PagedPool, sizeof(*ClientContext), NPFS_CLIENT_SEC_CTX_TAG); + ClientContext = ExAllocatePoolWithQuotaTag(PagedPool | POOL_QUOTA_FAIL_INSTEAD_OF_RAISE, + sizeof(*ClientContext), + NPFS_CLIENT_SEC_CTX_TAG); Ccb->ClientContext = ClientContext; if (!ClientContext) return STATUS_INSUFFICIENT_RESOURCES; Status = SeCreateClientSecurity(Thread, &Ccb->ClientQos, 0, ClientContext); - if (!NT_SUCCESS(Status)) return Status; + if (!NT_SUCCESS(Status)) + { + ExFreePool(Ccb->ClientContext); + Ccb->ClientContext = NULL; + } - ExFreePool(Ccb->ClientContext); - Ccb->ClientContext = NULL; return Status; } diff --git a/reactos/drivers/filesystems/npfs/seinfo.c b/reactos/drivers/filesystems/npfs/seinfo.c index 546388dd1c6..1678ef27afa 100644 --- a/reactos/drivers/filesystems/npfs/seinfo.c +++ b/reactos/drivers/filesystems/npfs/seinfo.c @@ -85,7 +85,8 @@ NpCommonSetSecurityInfo(IN PDEVICE_OBJECT DeviceObject, if (!NT_SUCCESS(Status)) return Status; Status = ObLogSecurityDescriptor(TempSecurityDescriptor, &NewSecurityDescriptor, 1); - ExFreePool(TempSecurityDescriptor); + ASSERT(TempSecurityDescriptor != OldSecurityDescriptor); + ExFreePoolWithTag(TempSecurityDescriptor, 0); if (!NT_SUCCESS(Status)) return Status;