diff options
author | Mike Lockwood <lockwood@google.com> | 2015-06-18 22:24:34 +0000 |
---|---|---|
committer | Android (Google) Code Review <android-gerrit@google.com> | 2015-06-18 22:24:42 +0000 |
commit | 6ee7ff426893d8b8ebbb63e02073b9780912bd17 (patch) | |
tree | 033007633f44b8e7bf5ec6677316494270f9d1f1 | |
parent | 60adb5fac864d05f19c6ae5e6295578749427ff3 (diff) | |
parent | 0dd1aab7b5184f41ec838def8493d16cfe70b739 (diff) | |
download | system_core-6ee7ff426893d8b8ebbb63e02073b9780912bd17.zip system_core-6ee7ff426893d8b8ebbb63e02073b9780912bd17.tar.gz system_core-6ee7ff426893d8b8ebbb63e02073b9780912bd17.tar.bz2 |
Merge "libusbhost: Fix problem reading USB string descriptors on some quirky devices" into mnc-dev
-rw-r--r-- | libusbhost/usbhost.c | 7 |
1 files changed, 5 insertions, 2 deletions
diff --git a/libusbhost/usbhost.c b/libusbhost/usbhost.c index 40b8b9f..b8e3215 100644 --- a/libusbhost/usbhost.c +++ b/libusbhost/usbhost.c @@ -56,6 +56,9 @@ #define USB_FS_ID_SCANNER USB_FS_DIR "/%d/%d" #define USB_FS_ID_FORMAT USB_FS_DIR "/%03d/%03d" +// Some devices fail to send string descriptors if we attempt reading > 255 bytes +#define MAX_STRING_DESCRIPTOR_LENGTH 255 + // From drivers/usb/core/devio.c // I don't know why this isn't in a kernel header #define MAX_USBFS_BUFFER_SIZE 16384 @@ -449,8 +452,8 @@ const struct usb_device_descriptor* usb_device_get_device_descriptor(struct usb_ char* usb_device_get_string(struct usb_device *device, int id) { char string[256]; - __u16 buffer[128]; - __u16 languages[128]; + __u16 buffer[MAX_STRING_DESCRIPTOR_LENGTH / sizeof(__u16)]; + __u16 languages[MAX_STRING_DESCRIPTOR_LENGTH / sizeof(__u16)]; int i, result; int languageCount = 0; |