diff -rpu4 libusb-1.0.22.orig/libusb/descriptor.c libusb-1.0.22/libusb/descriptor.c --- libusb-1.0.22.orig/libusb/descriptor.c 2018-03-17 08:23:37.000000000 +0100 +++ libusb-1.0.22/libusb/descriptor.c 2018-03-29 10:36:09.968429473 +0200 @@ -1173,9 +1173,9 @@ int API_EXPORTED libusb_get_string_descr if (tbuf[1] != LIBUSB_DT_STRING) return LIBUSB_ERROR_IO; if (tbuf[0] > r) - return LIBUSB_ERROR_IO; + tbuf[0] = r; di = 0; for (si = 2; si < tbuf[0]; si += 2) { if (di >= (length - 1))