[NTOS:IO] Properly zero-initialize a file object created by IopParseDevice (#4931)
authorOleg Dubinskiy <oleg.dubinskij30@gmail.com>
Wed, 7 Dec 2022 22:15:42 +0000 (23:15 +0100)
committerGitHub <noreply@github.com>
Wed, 7 Dec 2022 22:15:42 +0000 (01:15 +0300)
Fix uninitialized kernel memory leakage for a case when a file object extension is appended.

CORE-18711

ntoskrnl/io/iomgr/file.c

index 548c7f2..bfe11ab 100644 (file)
@@ -857,7 +857,7 @@ IopParseDevice(IN PVOID ParseObject,
             }
 
             /* Clear the file object */
-            RtlZeroMemory(FileObject, sizeof(FILE_OBJECT));
+            RtlZeroMemory(FileObject, ObjectSize);
 
             /* Check if this is Synch I/O */
             if (OpenPacket->CreateOptions &
@@ -917,6 +917,7 @@ IopParseDevice(IN PVOID ParseObject,
                 /* Make sure the file object knows it has an extension */
                 FileObject->Flags |= FO_FILE_OBJECT_HAS_EXTENSION;
 
+                /* Initialize file object extension */
                 FileObjectExtension = (PFILE_OBJECT_EXTENSION)(FileObject + 1);
                 FileObject->FileObjectExtension = FileObjectExtension;