| Index: device/usb/usb_descriptors.cc
|
| diff --git a/device/usb/usb_descriptors.cc b/device/usb/usb_descriptors.cc
|
| index 18316c58dbfd7fafa7717df47c5b419973aa9fac..5ad332b4b123b4203916f9f0b527e7fc3ba1e62a 100644
|
| --- a/device/usb/usb_descriptors.cc
|
| +++ b/device/usb/usb_descriptors.cc
|
| @@ -82,10 +82,14 @@ void OnDoneReadingConfigDescriptors(
|
| std::unique_ptr<UsbDeviceDescriptor> desc,
|
| const base::Callback<void(std::unique_ptr<UsbDeviceDescriptor>)>&
|
| callback) {
|
| - if (desc->num_configurations == desc->configurations.size())
|
| + if (desc->num_configurations == desc->configurations.size()) {
|
| callback.Run(std::move(desc));
|
| - else
|
| + } else {
|
| + LOG(ERROR) << "Failed to read all configuration descriptors. Expected "
|
| + << static_cast<int>(desc->num_configurations) << ", got "
|
| + << desc->configurations.size() << ".";
|
| callback.Run(nullptr);
|
| + }
|
| }
|
|
|
| void OnReadConfigDescriptor(UsbDeviceDescriptor* desc,
|
| @@ -93,8 +97,14 @@ void OnReadConfigDescriptor(UsbDeviceDescriptor* desc,
|
| UsbTransferStatus status,
|
| scoped_refptr<IOBuffer> buffer,
|
| size_t length) {
|
| - if (status == USB_TRANSFER_COMPLETED)
|
| - desc->Parse(std::vector<uint8_t>(buffer->data(), buffer->data() + length));
|
| + if (status == USB_TRANSFER_COMPLETED) {
|
| + if (!desc->Parse(
|
| + std::vector<uint8_t>(buffer->data(), buffer->data() + length))) {
|
| + LOG(ERROR) << "Failed to parse configuration descriptor.";
|
| + }
|
| + } else {
|
| + LOG(ERROR) << "Failed to read configuration descriptor.";
|
| + }
|
| closure.Run();
|
| }
|
|
|
| @@ -116,6 +126,8 @@ void OnReadConfigDescriptorHeader(scoped_refptr<UsbDeviceHandle> device_handle,
|
| kControlTransferTimeout,
|
| base::Bind(&OnReadConfigDescriptor, desc, closure));
|
| } else {
|
| + LOG(ERROR) << "Failed to read length for configuration "
|
| + << static_cast<int>(index) << ".";
|
| closure.Run();
|
| }
|
| }
|
| @@ -127,6 +139,7 @@ void OnReadDeviceDescriptor(
|
| scoped_refptr<IOBuffer> buffer,
|
| size_t length) {
|
| if (status != USB_TRANSFER_COMPLETED) {
|
| + LOG(ERROR) << "Failed to read device descriptor.";
|
| callback.Run(nullptr);
|
| return;
|
| }
|
| @@ -134,6 +147,7 @@ void OnReadDeviceDescriptor(
|
| std::unique_ptr<UsbDeviceDescriptor> desc(new UsbDeviceDescriptor());
|
| if (!desc->Parse(
|
| std::vector<uint8_t>(buffer->data(), buffer->data() + length))) {
|
| + LOG(ERROR) << "Device descriptor parsing error.";
|
| callback.Run(nullptr);
|
| return;
|
| }
|
| @@ -430,6 +444,9 @@ bool UsbDeviceDescriptor::Parse(const std::vector<uint8_t>& buffer) {
|
| vendor_id = data[8] | data[9] << 8;
|
| product_id = data[10] | data[11] << 8;
|
| device_version = data[12] | data[13] << 8;
|
| + i_manufacturer = data[14];
|
| + i_product = data[15];
|
| + i_serial_number = data[16];
|
| num_configurations = data[17];
|
| break;
|
| case kConfigurationDescriptorType:
|
|
|