mirror of
https://github.com/reactos/reactos.git
synced 2024-07-01 02:10:07 +00:00
[NPFS]
- Fix IRP_MJ_SET_SECURITY. CID 1102517, 1106330 - Fix variable type in NpCommonQueryVolumeInformation. CID 1102210, 1102211 svn path=/trunk/; revision=60742
This commit is contained in:
parent
5e7db1ef90
commit
e02f9e1406
|
@ -61,7 +61,9 @@ NpCommonSetSecurityInfo(IN PDEVICE_OBJECT DeviceObject,
|
|||
PNP_FCB Fcb;
|
||||
PNP_CCB Ccb;
|
||||
ULONG NamedPipeEnd;
|
||||
PVOID CachedSecurityDescriptor, SecurityDescriptor;
|
||||
PSECURITY_DESCRIPTOR OldSecurityDescriptor;
|
||||
PSECURITY_DESCRIPTOR TempSecurityDescriptor;
|
||||
PSECURITY_DESCRIPTOR NewSecurityDescriptor;
|
||||
PAGED_CODE();
|
||||
|
||||
IoStack = IoGetCurrentIrpStackLocation(Irp);
|
||||
|
@ -73,21 +75,22 @@ NpCommonSetSecurityInfo(IN PDEVICE_OBJECT DeviceObject,
|
|||
if (!NodeTypeCode) return STATUS_PIPE_DISCONNECTED;
|
||||
if (NodeTypeCode != NPFS_NTC_CCB) return STATUS_INVALID_PARAMETER;
|
||||
|
||||
OldSecurityDescriptor = TempSecurityDescriptor = Fcb->SecurityDescriptor;
|
||||
Status = SeSetSecurityDescriptorInfo(NULL,
|
||||
&IoStack->Parameters.SetSecurity.SecurityInformation,
|
||||
IoStack->Parameters.SetSecurity.SecurityDescriptor,
|
||||
&SecurityDescriptor,
|
||||
&TempSecurityDescriptor,
|
||||
TRUE,
|
||||
IoGetFileObjectGenericMapping());
|
||||
if (!NT_SUCCESS(Status)) return Status;
|
||||
|
||||
Status = ObLogSecurityDescriptor(SecurityDescriptor, &CachedSecurityDescriptor, TRUE);
|
||||
ExFreePool(SecurityDescriptor);
|
||||
Status = ObLogSecurityDescriptor(TempSecurityDescriptor, &NewSecurityDescriptor, TRUE);
|
||||
ExFreePool(TempSecurityDescriptor);
|
||||
|
||||
if (!NT_SUCCESS(Status)) return Status;
|
||||
|
||||
Fcb->SecurityDescriptor = CachedSecurityDescriptor;
|
||||
ObDereferenceSecurityDescriptor(SecurityDescriptor, 1);
|
||||
Fcb->SecurityDescriptor = NewSecurityDescriptor;
|
||||
ObDereferenceSecurityDescriptor(OldSecurityDescriptor, 1);
|
||||
return Status;
|
||||
}
|
||||
|
||||
|
@ -127,7 +130,7 @@ NpFsdSetSecurityInfo(IN PDEVICE_OBJECT DeviceObject,
|
|||
FsRtlEnterFileSystem();
|
||||
NpAcquireExclusiveVcb();
|
||||
|
||||
Status = NpCommonQuerySecurityInfo(DeviceObject, Irp);
|
||||
Status = NpCommonSetSecurityInfo(DeviceObject, Irp);
|
||||
|
||||
NpReleaseVcb();
|
||||
FsRtlExitFileSystem();
|
||||
|
|
|
@ -140,7 +140,7 @@ NpCommonQueryVolumeInformation(IN PDEVICE_OBJECT DeviceObject,
|
|||
IN PIRP Irp)
|
||||
{
|
||||
PIO_STACK_LOCATION IoStack;
|
||||
FILE_INFORMATION_CLASS InfoClass;
|
||||
FS_INFORMATION_CLASS InfoClass;
|
||||
ULONG Length;
|
||||
PVOID Buffer;
|
||||
NTSTATUS Status;
|
||||
|
|
Loading…
Reference in a new issue