summaryrefslogtreecommitdiff
path: root/src/libopenusb1-glue.c
diff options
context:
space:
mode:
authorQiuhao Li <Qiuhao.Li@outlook.com>2022-11-22 08:14:15 +0800
committerQiuhao Li <Qiuhao.Li@outlook.com>2022-11-22 08:14:15 +0800
commitc4aa42c161474d03d3ce9137942aa0d8d58ba46f (patch)
tree552068d01c086418710c043c301a792e9b2cf886 /src/libopenusb1-glue.c
parent8a9a45a49bfaf8f91421d714393d49fa05871e4b (diff)
downloadlibmtp-c4aa42c161474d03d3ce9137942aa0d8d58ba46f.tar.gz
libusb-glue: check return value of ptp_init_send_memory_handler
In case calling uninitialized function pointer and free uninitialized data pointer. Signed-off-by: Qiuhao Li <Qiuhao.Li@outlook.com>
Diffstat (limited to 'src/libopenusb1-glue.c')
-rw-r--r--src/libopenusb1-glue.c10
1 files changed, 8 insertions, 2 deletions
diff --git a/src/libopenusb1-glue.c b/src/libopenusb1-glue.c
index 8dd9e06..c93750d 100644
--- a/src/libopenusb1-glue.c
+++ b/src/libopenusb1-glue.c
@@ -1179,7 +1179,10 @@ ptp_usb_sendreq(PTPParams* params, PTPContainer* req, int dataphase) {
usbreq.payload.params.param5 = htod32(req->Param5);
/* send it to responder */
towrite = PTP_USB_BULK_REQ_LEN - (sizeof (uint32_t)*(5 - req->Nparam));
- ptp_init_send_memory_handler(&memhandler, (unsigned char*) &usbreq, towrite);
+ ret = ptp_init_send_memory_handler(&memhandler, (unsigned char*) &usbreq, towrite);
+ if (ret != PTP_RC_OK) {
+ return ret;
+ }
ret = ptp_write_func(
towrite,
&memhandler,
@@ -1244,7 +1247,10 @@ ptp_usb_senddata(PTPParams* params, PTPContainer* ptp,
return PTP_RC_GeneralError;
}
}
- ptp_init_send_memory_handler(&memhandler, (unsigned char *) &usbdata, wlen);
+ ret = ptp_init_send_memory_handler(&memhandler, (unsigned char *) &usbdata, wlen);
+ if (ret != PTP_RC_OK) {
+ return ret;
+ }
/* send first part of data */
ret = ptp_write_func(wlen, &memhandler, params->data, &written);
ptp_exit_send_memory_handler(&memhandler);