fastboot: gracefully handle failure to open a USB device on OS X.

High Sierra restricts opening some USB devices (e.g. the touchbar)
to processes that have specific entitlements. Ignore devices that we
can't open.

Bug: http://b/64292422
Test: manual
Change-Id: I6074b53a365b8d936610bafea60244f8bba1a33f
This commit is contained in:
Josh Gao 2017-08-18 18:25:44 -07:00
parent de6b44aa0e
commit f806a3c303

View file

@ -93,12 +93,9 @@ static int try_interfaces(IOUSBDeviceInterface182 **dev, usb_handle *handle) {
SInt32 score;
UInt8 interfaceNumEndpoints;
// Placing the constant KIOUSBFindInterfaceDontCare into the following
// fields of the IOUSBFindInterfaceRequest structure will allow us to
// find all of the interfaces
request.bInterfaceClass = kIOUSBFindInterfaceDontCare;
request.bInterfaceSubClass = kIOUSBFindInterfaceDontCare;
request.bInterfaceProtocol = kIOUSBFindInterfaceDontCare;
request.bInterfaceClass = 0xff;
request.bInterfaceSubClass = 0x42;
request.bInterfaceProtocol = 0x03;
request.bAlternateSetting = kIOUSBFindInterfaceDontCare;
// Get an iterator for the interfaces on the device
@ -282,7 +279,6 @@ static int try_device(io_service_t device, usb_handle *handle) {
&plugin, &score);
if ((kr != 0) || (plugin == NULL)) {
ERR("Unable to create a plug-in (%08x)\n", kr);
goto error;
}
@ -436,8 +432,7 @@ static int init_usb(ifc_match_func callback, std::unique_ptr<usb_handle>* handle
if (try_device(device, &h) != 0) {
IOObjectRelease(device);
ret = -1;
break;
continue;
}
if (h.success) {