From 2b425ad61c9376b49a7709d26c045fb5b73e9142 Mon Sep 17 00:00:00 2001 From: Henning Geinitz Date: Sun, 22 Jan 2006 16:52:13 +0000 Subject: [PATCH] Added checks for altsetting =! 0. --- ChangeLog | 2 ++ sanei/sanei_usb.c | 13 +++++++++++-- tools/sane-find-scanner.c | 3 +++ 3 files changed, 16 insertions(+), 2 deletions(-) diff --git a/ChangeLog b/ChangeLog index 00ca59de6..3308085af 100644 --- a/ChangeLog +++ b/ChangeLog @@ -5,6 +5,8 @@ ). * doc/descriptions/unsupported.desc: Added Scanshell 800N and Canon Smartbase MP360. + * sanei/sanei_usb.c tools/sane-find-scanner.c: Added checks for + altsetting =! 0. 2006-01-22 Mattias Ellert diff --git a/sanei/sanei_usb.c b/sanei/sanei_usb.c index 867d40e3a..34a27e539 100644 --- a/sanei/sanei_usb.c +++ b/sanei/sanei_usb.c @@ -459,6 +459,15 @@ sanei_usb_init (void) found = SANE_TRUE; break; case USB_CLASS_PER_INTERFACE: + if (dev->config[0].interface[interface].num_altsetting == 0 || + !dev->config[0].interface[interface].altsetting) + { + DBG (1, "sanei_usb_init: device 0x%04x/0x%04x doesn't " + "have an altsetting for interface %d\n", + dev->descriptor.idVendor, dev->descriptor.idProduct, + interface); + continue; + } switch (dev->config[0].interface[interface].altsetting[0]. bInterfaceClass) { @@ -476,8 +485,8 @@ sanei_usb_init (void) "scanner (%d/%d)\n", dev->descriptor.idVendor, dev->descriptor.idProduct, interface, dev->descriptor.bDeviceClass, - dev->config[0].interface[interface].altsetting[0]. - bInterfaceClass); + dev->config[0].interface[interface].altsetting != 0 ? dev->config[0].interface[interface].altsetting[0]. + bInterfaceClass : -1); } interface--; if (!found) diff --git a/tools/sane-find-scanner.c b/tools/sane-find-scanner.c index 24eac8944..372e3b605 100644 --- a/tools/sane-find-scanner.c +++ b/tools/sane-find-scanner.c @@ -625,6 +625,9 @@ check_libusb_device (struct usb_device *dev, SANE_Bool from_file) ++is_scanner; break; case USB_CLASS_PER_INTERFACE: + if (dev->config[0].interface[interface_nr].num_altsetting == 0 || + !dev->config[0].interface[interface_nr].altsetting) + break; switch (dev->config[0].interface[interface_nr].altsetting[0].bInterfaceClass) { case USB_CLASS_VENDOR_SPEC: