diff -ru libusb-0.1.12.orig/descriptors.c libusb-0.1.12/descriptors.c --- libusb-0.1.12.orig/descriptors.c 2006-03-04 02:52:46.000000000 +0000 +++ libusb-0.1.12/descriptors.c 2010-02-16 17:31:42.000000000 +0000 @@ -235,11 +235,12 @@ } /* Did we hit an unexpected descriptor? */ - usb_parse_descriptor(buffer, "bb", &header); - if ((size >= DESC_HEADER_LENGTH) && - ((header.bDescriptorType == USB_DT_CONFIG) || - (header.bDescriptorType == USB_DT_DEVICE))) - return parsed; + if (size >= DESC_HEADER_LENGTH) { + usb_parse_descriptor(buffer, "bb", &header); + if (((header.bDescriptorType == USB_DT_CONFIG) || + (header.bDescriptorType == USB_DT_DEVICE))) + return parsed; + } if (ifp->bNumEndpoints > USB_MAXENDPOINTS) { if (usb_debug >= 1)