diff options
author | Jerry Zhang <zhangjerry@google.com> | 2017-10-18 00:38:37 +0000 |
---|---|---|
committer | android-build-merger <android-build-merger@google.com> | 2017-10-18 00:38:37 +0000 |
commit | 70b080a741fc401f24b0432fff1f95c834311cda (patch) | |
tree | 5451c867ef898d36760d56a1a8f2d48822ceea5a | |
parent | 68851ea546cddca1136bd9a9b9b18abb2ce68cb0 (diff) | |
parent | 4c8326f8bbb8908aef19a96bd774618370df5acc (diff) | |
download | libmtp-70b080a741fc401f24b0432fff1f95c834311cda.tar.gz |
Merge changes I234b2f09,Ifdca65fc
am: 4c8326f8bb
Change-Id: Ie5dec66495a51a55a3eb6e3939d43b9a8623e045
-rwxr-xr-x | autogen.sh | 3 | ||||
-rw-r--r-- | src/libopenusb1-glue.c | 8 | ||||
-rw-r--r-- | src/libusb-glue.c | 8 | ||||
-rw-r--r-- | src/libusb1-glue.c | 8 |
4 files changed, 23 insertions, 4 deletions
@@ -16,7 +16,8 @@ fail() { echo "Removing libtool cruft" rm -f ltmain.sh config.guess config.sub echo "Running libtoolize" -libtoolize --copy --force || fail +(glibtoolize --version) < /dev/null > /dev/null 2>&1 && LIBTOOLIZE=glibtoolize || LIBTOOLIZE=libtoolize +$LIBTOOLIZE --copy --force || fail # Refresh GNU autotools toolchain: aclocal autoheader echo "Removing aclocal cruft" diff --git a/src/libopenusb1-glue.c b/src/libopenusb1-glue.c index 4d88f82..a4cfbad 100644 --- a/src/libopenusb1-glue.c +++ b/src/libopenusb1-glue.c @@ -1210,6 +1210,10 @@ ptp_usb_senddata(PTPParams* params, PTPContainer* ptp, PTPUSBBulkContainer usbdata; uint64_t bytes_left_to_transfer; PTPDataHandler memhandler; + unsigned long packet_size; + PTP_USB *ptp_usb = (PTP_USB *) params->data; + + packet_size = ptp_usb->inep_maxpacket; LIBMTP_USB_DEBUG("SEND DATA PHASE\n"); @@ -1252,7 +1256,9 @@ ptp_usb_senddata(PTPParams* params, PTPContainer* ptp, bytes_left_to_transfer = size - datawlen; ret = PTP_RC_OK; while (bytes_left_to_transfer > 0) { - ret = ptp_write_func(bytes_left_to_transfer, handler, params->data, &written); + int max_long_transfer = ULONG_MAX + 1 - packet_size; + ret = ptp_write_func (bytes_left_to_transfer > max_long_transfer ? max_long_transfer : bytes_left_to_transfer, + handler, params->data, &written); if (ret != PTP_RC_OK){ break; } diff --git a/src/libusb-glue.c b/src/libusb-glue.c index 722a591..0079b08 100644 --- a/src/libusb-glue.c +++ b/src/libusb-glue.c @@ -1202,6 +1202,10 @@ ptp_usb_senddata (PTPParams* params, PTPContainer* ptp, PTPUSBBulkContainer usbdata; uint64_t bytes_left_to_transfer; PTPDataHandler memhandler; + unsigned long packet_size; + PTP_USB *ptp_usb = (PTP_USB *) params->data; + + packet_size = ptp_usb->inep_maxpacket; LIBMTP_USB_DEBUG("SEND DATA PHASE\n"); @@ -1242,7 +1246,9 @@ ptp_usb_senddata (PTPParams* params, PTPContainer* ptp, bytes_left_to_transfer = size-datawlen; ret = PTP_RC_OK; while(bytes_left_to_transfer > 0) { - ret = ptp_write_func (bytes_left_to_transfer, handler, params->data, &written); + int max_long_transfer = ULONG_MAX + 1 - packet_size; + ret = ptp_write_func (bytes_left_to_transfer > max_long_transfer ? max_long_transfer : bytes_left_to_transfer, + handler, params->data, &written); if (ret != PTP_RC_OK) break; if (written == 0) { diff --git a/src/libusb1-glue.c b/src/libusb1-glue.c index 8894378..3098553 100644 --- a/src/libusb1-glue.c +++ b/src/libusb1-glue.c @@ -1227,6 +1227,10 @@ ptp_usb_senddata (PTPParams* params, PTPContainer* ptp, PTPUSBBulkContainer usbdata; uint64_t bytes_left_to_transfer; PTPDataHandler memhandler; + unsigned long packet_size; + PTP_USB *ptp_usb = (PTP_USB *) params->data; + + packet_size = ptp_usb->outep_maxpacket; LIBMTP_USB_DEBUG("SEND DATA PHASE\n"); @@ -1267,7 +1271,9 @@ ptp_usb_senddata (PTPParams* params, PTPContainer* ptp, bytes_left_to_transfer = size-datawlen; ret = PTP_RC_OK; while(bytes_left_to_transfer > 0) { - ret = ptp_write_func (bytes_left_to_transfer, handler, params->data, &written); + int max_long_transfer = ULONG_MAX + 1 - packet_size; + ret = ptp_write_func (bytes_left_to_transfer > max_long_transfer ? max_long_transfer : bytes_left_to_transfer, + handler, params->data, &written); if (ret != PTP_RC_OK) break; if (written == 0) { |