From 9961bb7d69c0fa8db2645cdb735a2a8f35c98896 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Herv=C3=A9=20Poussineau?= Date: Thu, 5 May 2005 15:39:09 +0000 Subject: [PATCH] Better handle of wrong arguments in IoRegisterDeviceInterface svn path=/trunk/; revision=15002 --- reactos/ntoskrnl/io/deviface.c | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/reactos/ntoskrnl/io/deviface.c b/reactos/ntoskrnl/io/deviface.c index 0c60f9c8b41..17966b22e41 100644 --- a/reactos/ntoskrnl/io/deviface.c +++ b/reactos/ntoskrnl/io/deviface.c @@ -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