Fix the crash issue with Gear 360 34/223134/1 accepted/tizen_6.0_unified accepted/tizen_6.0_unified_hotfix tizen_6.0 tizen_6.0_hotfix accepted/tizen/6.0/unified/20201030.110522 accepted/tizen/6.0/unified/hotfix/20201102.234623 accepted/tizen/6.0/unified/hotfix/20201103.051208 accepted/tizen/unified/20200129.022724 submit/tizen/20200123.071233 submit/tizen/20200127.233922 submit/tizen/20200128.060532 submit/tizen_6.0/20201029.205502 submit/tizen_6.0_hotfix/20201102.192902 submit/tizen_6.0_hotfix/20201103.115102 tizen_6.0.m2_release
authorDoHyun Pyun <dh79.pyun@samsung.com>
Thu, 23 Jan 2020 04:09:38 +0000 (13:09 +0900)
committerDoHyun Pyun <dh79.pyun@samsung.com>
Thu, 23 Jan 2020 07:11:18 +0000 (16:11 +0900)
Change-Id: I9f26480f9144c8f71fcab603af15018091274485
Signed-off-by: DoHyun Pyun <dh79.pyun@samsung.com>
packaging/libmtp.spec
src/libopenusb1-glue.c
src/libusb-glue.c
src/libusb1-glue.c

index a403f8b..401b8af 100755 (executable)
@@ -3,7 +3,7 @@
 Name:       libmtp
 Summary:    Library for media transfer protocol (mtp)
 Version:    1.1.11
-Release:    12
+Release:    13
 Group:      Network & Connectivity/Other
 License:    LGPL-2.1
 Source0:    libmtp-%{version}.tar.gz
index 1e04f04..8f670eb 100755 (executable)
@@ -1297,6 +1297,16 @@ static uint16_t ptp_usb_getpacket(PTPParams *params,
     ret = ptp_read_func(packet_size, &memhandler, params->data, rlen, 0);
     ptp_exit_recv_memory_handler(&memhandler, &x, rlen);
     if (x) {
+        /*
+         * [DF200122-01357] Crash observed on accessing 360 camera via MTP .
+         */
+        if (*rlen > sizeof(PTPUSBBulkContainer)) {
+            libusb_glue_error(params,
+                "PTP: The packet size is so large");
+            free(x);
+            return PTP_RC_NoValidObjectInfo;
+        }
+
         memcpy(packet, x, *rlen);
         free(x);
     }
index 1b477a4..14daf53 100755 (executable)
@@ -1288,8 +1288,18 @@ static uint16_t ptp_usb_getpacket(PTPParams *params,
        ret = ptp_read_func(packet_size, &memhandler, params->data, rlen, 0);
        ptp_exit_recv_memory_handler (&memhandler, &x, rlen);
        if (x) {
-               memcpy (packet, x, *rlen);
-               free (x);
+               /*
+                * [DF200122-01357] Crash observed on accessing 360 camera via MTP .
+                */
+               if (*rlen > sizeof(PTPUSBBulkContainer)) {
+                       libusb_glue_error(params,
+                       "PTP: The packet size is so large");
+                       free(x);
+                       return PTP_RC_NoValidObjectInfo;
+               }
+
+               memcpy(packet, x, *rlen);
+               free(x);
        }
        return ret;
 }
index 5c8c46a..c4527d2 100755 (executable)
@@ -1343,8 +1343,18 @@ static uint16_t ptp_usb_getpacket(PTPParams *params,
        ret = ptp_read_func(packet_size, &memhandler, params->data, rlen, 0);
        ptp_exit_recv_memory_handler (&memhandler, &x, rlen);
        if (x) {
-               memcpy (packet, x, *rlen);
-               free (x);
+               /*
+                * [DF200122-01357] Crash observed on accessing 360 camera via MTP .
+                */
+               if (*rlen > sizeof(PTPUSBBulkContainer)) {
+                       libusb_glue_error(params,
+                       "PTP: The packet size is so large");
+                       free(x);
+                       return PTP_RC_NoValidObjectInfo;
+               }
+
+               memcpy(packet, x, *rlen);
+               free(x);
        }
        return ret;
 }