Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 469ebef9 authored by Josh Gao's avatar Josh Gao Committed by android-build-merger
Browse files

Merge "adb: disable USB packet overflow checking on OS X." am: a4a9a81d

am: 2d64fd76

Change-Id: I8bf4b88bdf5e9930df6614728bea96611d7b5b86
parents b7cf2cba 2d64fd76
Loading
Loading
Loading
Loading
+1 −0
Original line number Diff line number Diff line
@@ -305,6 +305,7 @@ AndroidInterfaceAdded(io_iterator_t iterator)
        handle->devpath = devpath;
        usb_handle* handle_p = handle.get();
        VLOG(USB) << "Add usb device " << serial;
        LOG(INFO) << "reported max packet size for " << serial << " is " << handle->max_packet_size;
        AddDevice(std::move(handle));
        register_usb_transport(reinterpret_cast<::usb_handle*>(handle_p), serial, devpath.c_str(),
                               1);
+14 −0
Original line number Diff line number Diff line
@@ -27,11 +27,18 @@

#if ADB_HOST

#if defined(__APPLE__)
#define CHECK_PACKET_OVERFLOW 0
#else
#define CHECK_PACKET_OVERFLOW 1
#endif

// Call usb_read using a buffer having a multiple of usb_get_max_packet_size() bytes
// to avoid overflow. See http://libusb.sourceforge.net/api-1.0/packetoverflow.html.
static int UsbReadMessage(usb_handle* h, amessage* msg) {
    D("UsbReadMessage");

#if CHECK_PACKET_OVERFLOW
    size_t usb_packet_size = usb_get_max_packet_size(h);
    CHECK_GE(usb_packet_size, sizeof(*msg));
    CHECK_LT(usb_packet_size, 4096ULL);
@@ -44,6 +51,9 @@ static int UsbReadMessage(usb_handle* h, amessage* msg) {
    }
    memcpy(msg, buffer, sizeof(*msg));
    return n;
#else
    return usb_read(h, msg, sizeof(*msg));
#endif
}

// Call usb_read using a buffer having a multiple of usb_get_max_packet_size() bytes
@@ -51,6 +61,7 @@ static int UsbReadMessage(usb_handle* h, amessage* msg) {
static int UsbReadPayload(usb_handle* h, apacket* p) {
    D("UsbReadPayload(%d)", p->msg.data_length);

#if CHECK_PACKET_OVERFLOW
    size_t usb_packet_size = usb_get_max_packet_size(h);
    CHECK_EQ(0ULL, sizeof(p->data) % usb_packet_size);

@@ -64,6 +75,9 @@ static int UsbReadPayload(usb_handle* h, apacket* p) {
    }
    CHECK_LE(len, sizeof(p->data));
    return usb_read(h, &p->data, len);
#else
    return usb_read(h, &p->data, p->msg.data_length);
#endif
}

static int remote_read(apacket* p, atransport* t) {