Index: drivers/usb/usbccgp/descriptor.c =================================================================== --- drivers/usb/usbccgp/descriptor.c (revision 66400) +++ drivers/usb/usbccgp/descriptor.c (working copy) @@ -326,6 +326,11 @@ // count all interface descriptors // DescriptorCount = ConfigurationDescriptor->bNumInterfaces; + if (DescriptorCount == 0) + { + DPRINT1("[USBCCGP] DescriptorCount is zero\n"); + return STATUS_INVALID_PARAMETER; + } // // allocate array holding the interface descriptors @@ -339,6 +344,9 @@ return STATUS_INSUFFICIENT_RESOURCES; } + DPRINT1("InterfaceList count before loop: %lu", FDODeviceExtension->InterfaceListCount); + ASSERT(FDODeviceExtension->InterfaceListCount == 0); + do { // @@ -350,6 +358,9 @@ // // store in interface list // + DPRINT1("InterfaceListCount %lu, DescriptorCount %lu InterfaceIndex %lu", FDODeviceExtension->InterfaceListCount, DescriptorCount, InterfaceIndex); + ASSERT(FDODeviceExtension->InterfaceListCount < DescriptorCount); + FDODeviceExtension->InterfaceList[FDODeviceExtension->InterfaceListCount].InterfaceDescriptor = InterfaceDescriptor; FDODeviceExtension->InterfaceListCount++; }