From 9bc4b8c26f2ae32a4cedb73c015ba5dad8bef032 Mon Sep 17 00:00:00 2001 From: Pali Rohár Date: Tue, 5 Jan 2021 15:04:31 +0100 Subject: usb-device: Check that usb device provides required interface/alternate settings --- src/usb-device.c | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/src/usb-device.c b/src/usb-device.c index 101d795..27d2809 100644 --- a/src/usb-device.c +++ b/src/usb-device.c @@ -165,6 +165,18 @@ static struct usb_device_info * usb_device_is_valid(struct usb_device * dev) { if ( usb_devices[i].protocol == FLASH_UNKN ) continue; + if ( dev->descriptor.bNumConfigurations < 1 ) + continue; + + if ( usb_devices[i].interface != -1 ) { + if ( usb_devices[i].interface >= dev->config[0].bNumInterfaces ) + continue; + if ( usb_devices[i].alternate != -1 ) { + if ( usb_devices[i].alternate >= dev->config[0].interface[usb_devices[i].interface].num_altsetting ) + continue; + } + } + printf("\b\b "); PRINTF_END(); PRINTF_ADD("Found "); -- cgit v1.2.3