[NTOSKRNL] On open, verify and validate the hint device object if any
authorPierre Schweitzer <pierre@reactos.org>
Fri, 5 Oct 2018 08:49:11 +0000 (10:49 +0200)
committerPierre Schweitzer <pierre@reactos.org>
Fri, 5 Oct 2018 08:49:59 +0000 (10:49 +0200)
ntoskrnl/io/iomgr/file.c

index c14e618..d8bb852 100644 (file)
@@ -673,10 +673,16 @@ IopParseDevice(IN PVOID ParseObject,
             }
         }
 
+        /* If we have a top level device hint, verify it */
         if (OpenPacket->InternalFlags & IOP_USE_TOP_LEVEL_DEVICE_HINT)
         {
-            // FIXME: Verify our device object is good to use
-            ASSERT(DirectOpen == FALSE);
+            Status = IopCheckTopDeviceHint(&DeviceObject, OpenPacket, DirectOpen);
+            if (!NT_SUCCESS(Status))
+            {
+                IopDereferenceDeviceObject(OriginalDeviceObject, FALSE);
+                if (Vpb) IopDereferenceVpbAndFree(Vpb);
+                return Status;
+            }
         }
 
         /* If we traversed a mount point, reset the information */