mirror of
https://github.com/reactos/reactos.git
synced 2025-04-20 12:29:56 +00:00
[NPFS]
- Correctly interpret SeCreateClientSecurity return value in NpInitializeSecurity - Always charge quota when allocating client context - Specify explicit 0 tag when freeing allocations with unknown pool tag - Misc readability fixes svn path=/trunk/; revision=64839
This commit is contained in:
parent
00ee551726
commit
46c2db7796
3 changed files with 14 additions and 9 deletions
|
@ -736,12 +736,12 @@ NpCreateNewNamedPipe(IN PNP_DCB Dcb,
|
||||||
}
|
}
|
||||||
|
|
||||||
SecurityContext = &AccessState->SubjectSecurityContext;
|
SecurityContext = &AccessState->SubjectSecurityContext;
|
||||||
SeLockSubjectContext(&AccessState->SubjectSecurityContext);
|
SeLockSubjectContext(SecurityContext);
|
||||||
|
|
||||||
Status = SeAssignSecurity(0,
|
Status = SeAssignSecurity(NULL,
|
||||||
AccessState->SecurityDescriptor,
|
AccessState->SecurityDescriptor,
|
||||||
&SecurityDescriptor,
|
&SecurityDescriptor,
|
||||||
0,
|
FALSE,
|
||||||
SecurityContext,
|
SecurityContext,
|
||||||
IoGetFileObjectGenericMapping(),
|
IoGetFileObjectGenericMapping(),
|
||||||
PagedPool);
|
PagedPool);
|
||||||
|
@ -756,7 +756,7 @@ NpCreateNewNamedPipe(IN PNP_DCB Dcb,
|
||||||
Status = ObLogSecurityDescriptor(SecurityDescriptor,
|
Status = ObLogSecurityDescriptor(SecurityDescriptor,
|
||||||
&CachedSecurityDescriptor,
|
&CachedSecurityDescriptor,
|
||||||
1);
|
1);
|
||||||
ExFreePool(SecurityDescriptor);
|
ExFreePoolWithTag(SecurityDescriptor, 0);
|
||||||
|
|
||||||
if (!NT_SUCCESS(Status))
|
if (!NT_SUCCESS(Status))
|
||||||
{
|
{
|
||||||
|
|
|
@ -108,15 +108,19 @@ NpInitializeSecurity(IN PNP_CCB Ccb,
|
||||||
return Status;
|
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;
|
Ccb->ClientContext = ClientContext;
|
||||||
if (!ClientContext) return STATUS_INSUFFICIENT_RESOURCES;
|
if (!ClientContext) return STATUS_INSUFFICIENT_RESOURCES;
|
||||||
|
|
||||||
Status = SeCreateClientSecurity(Thread, &Ccb->ClientQos, 0, ClientContext);
|
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;
|
return Status;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -85,7 +85,8 @@ NpCommonSetSecurityInfo(IN PDEVICE_OBJECT DeviceObject,
|
||||||
if (!NT_SUCCESS(Status)) return Status;
|
if (!NT_SUCCESS(Status)) return Status;
|
||||||
|
|
||||||
Status = ObLogSecurityDescriptor(TempSecurityDescriptor, &NewSecurityDescriptor, 1);
|
Status = ObLogSecurityDescriptor(TempSecurityDescriptor, &NewSecurityDescriptor, 1);
|
||||||
ExFreePool(TempSecurityDescriptor);
|
ASSERT(TempSecurityDescriptor != OldSecurityDescriptor);
|
||||||
|
ExFreePoolWithTag(TempSecurityDescriptor, 0);
|
||||||
|
|
||||||
if (!NT_SUCCESS(Status)) return Status;
|
if (!NT_SUCCESS(Status)) return Status;
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue