https://git.reactos.org/?p=reactos.git;a=commitdiff;h=36c20dc56ba225643eec76866f4a95cdbea219b1

commit 36c20dc56ba225643eec76866f4a95cdbea219b1
Author:     Pierre Schweitzer <pie...@reactos.org>
AuthorDate: Fri Aug 10 08:01:31 2018 +0200
Commit:     Pierre Schweitzer <pie...@reactos.org>
CommitDate: Sat Aug 11 23:01:11 2018 +0200

    [NTOSKRNL] Deny page file creation on floppy disk
---
 ntoskrnl/mm/pagefile.c | 11 +++++++++++
 1 file changed, 11 insertions(+)

diff --git a/ntoskrnl/mm/pagefile.c b/ntoskrnl/mm/pagefile.c
index 1ea1f07302..7e73002153 100644
--- a/ntoskrnl/mm/pagefile.c
+++ b/ntoskrnl/mm/pagefile.c
@@ -504,6 +504,7 @@ NtCreatePagingFile(IN PUNICODE_STRING FileName,
     KPROCESSOR_MODE PreviousMode;
     UNICODE_STRING CapturedFileName;
     LARGE_INTEGER SafeInitialSize, SafeMaximumSize, AllocationSize;
+    FILE_FS_DEVICE_INFORMATION FsDeviceInfo;
 
     DPRINT("NtCreatePagingFile(FileName %wZ, InitialSize %I64d)\n",
            FileName, InitialSize->QuadPart);
@@ -660,6 +661,16 @@ NtCreatePagingFile(IN PUNICODE_STRING FileName,
         return(Status);
     }
 
+    /* Deny page file creation on a floppy disk */
+    FsDeviceInfo.Characteristics = 0;
+    IoQueryVolumeInformation(FileObject, FileFsDeviceInformation, 
sizeof(FsDeviceInfo), &FsDeviceInfo, &Count);
+    if (BooleanFlagOn(FsDeviceInfo.Characteristics, FILE_FLOPPY_DISKETTE))
+    {
+        ObDereferenceObject(FileObject);
+        ZwClose(FileHandle);
+        return STATUS_FLOPPY_VOLUME;
+    }
+
     CurrentRetDescList = RetDescList = 
MmAllocRetrievelDescriptorList(PAIRS_PER_RUN);
 
     if (CurrentRetDescList == NULL)

Reply via email to