Better handle of wrong arguments in IoRegisterDeviceInterface
authorHervé Poussineau <hpoussin@reactos.org>
Thu, 5 May 2005 15:39:09 +0000 (15:39 +0000)
committerHervé Poussineau <hpoussin@reactos.org>
Thu, 5 May 2005 15:39:09 +0000 (15:39 +0000)
svn path=/trunk/; revision=15002

reactos/ntoskrnl/io/deviface.c

index 0c60f9c..17966b2 100644 (file)
@@ -585,6 +585,12 @@ IoRegisterDeviceInterface(
    ULONG i;
    NTSTATUS Status;
    
+   if (!(PhysicalDeviceObject->Flags & DO_BUS_ENUMERATED_DEVICE))
+   {
+     DPRINT("PhysicalDeviceObject 0x%p is not a valid Pdo\n", PhysicalDeviceObject);
+     return STATUS_INVALID_PARAMETER_1;
+   }
+   
    Status = RtlStringFromGUID(InterfaceClassGuid, &GuidString);
    if (!NT_SUCCESS(Status))
    {
@@ -606,6 +612,7 @@ IoRegisterDeviceInterface(
    ASSERT(PdoNameInfo->Name.Length);
    
    /* Create base key name for this interface: HKLM\SYSTEM\CurrentControlSet\DeviceClasses\{GUID}\##?#ACPI#PNP0501#1#{GUID} */
+   ASSERT(PhysicalDeviceObject->DeviceObjectExtension->DeviceNode);
    InstancePath = &PhysicalDeviceObject->DeviceObjectExtension->DeviceNode->InstancePath;
    BaseKeyName.Length = wcslen(BaseKeyString) * sizeof(WCHAR);
    BaseKeyName.MaximumLength = BaseKeyName.Length