diff --git a/g10/ChangeLog b/g10/ChangeLog index 982401868..6696c0a69 100644 --- a/g10/ChangeLog +++ b/g10/ChangeLog @@ -1,3 +1,10 @@ +2004-09-10 David Shaw + + * ccid-driver.c (read_device_info): Fix segfault when usb device + is not accessible. + (ccid_open_reader): Allow working with an even older version of + libusb (usb_busses global instead of usb_get_busses()). + 2004-09-09 Werner Koch * cardglue.h: Add members for CA fingerprints. diff --git a/g10/ccid-driver.c b/g10/ccid-driver.c index 0fc168590..9847748f2 100644 --- a/g10/ccid-driver.c +++ b/g10/ccid-driver.c @@ -423,6 +423,9 @@ read_device_info (ccid_driver_t handle, struct usb_device *dev) struct usb_config_descriptor *config = dev->config + cfg_no; int ifc_no; + if(!config) + continue; + for (ifc_no=0; ifc_no < config->bNumInterfaces; ifc_no++) { struct usb_interface *interface = config->interface + ifc_no; @@ -564,7 +567,12 @@ ccid_open_reader (ccid_driver_t *handle, int readerno) usb_find_busses(); usb_find_devices(); + +#ifdef HAVE_USB_GET_BUSSES busses = usb_get_busses(); +#else + busses = usb_busses; +#endif for (bus = busses; bus; bus = bus->next) {