From e02f9e14060797abe20fc74a29555eb102a8e8e1 Mon Sep 17 00:00:00 2001 From: Thomas Faber Date: Thu, 24 Oct 2013 19:11:04 +0000 Subject: [PATCH] [NPFS] - Fix IRP_MJ_SET_SECURITY. CID 1102517, 1106330 - Fix variable type in NpCommonQueryVolumeInformation. CID 1102210, 1102211 svn path=/trunk/; revision=60742 --- reactos/drivers/filesystems/npfs/seinfo.c | 17 ++++++++++------- reactos/drivers/filesystems/npfs/volinfo.c | 2 +- 2 files changed, 11 insertions(+), 8 deletions(-) diff --git a/reactos/drivers/filesystems/npfs/seinfo.c b/reactos/drivers/filesystems/npfs/seinfo.c index b2c50a481ef..5b1b0e1ca69 100644 --- a/reactos/drivers/filesystems/npfs/seinfo.c +++ b/reactos/drivers/filesystems/npfs/seinfo.c @@ -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(); diff --git a/reactos/drivers/filesystems/npfs/volinfo.c b/reactos/drivers/filesystems/npfs/volinfo.c index 1985ff6fe46..79e8471b232 100644 --- a/reactos/drivers/filesystems/npfs/volinfo.c +++ b/reactos/drivers/filesystems/npfs/volinfo.c @@ -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;