summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--daemon/device.c5
1 files changed, 5 insertions, 0 deletions
diff --git a/daemon/device.c b/daemon/device.c
index 00c0340..7cda462 100644
--- a/daemon/device.c
+++ b/daemon/device.c
@@ -552,6 +552,11 @@ void device_data_input(struct usb_device *usbdev, unsigned char *buffer, int len
552 552
553 // handle broken up transfers 553 // handle broken up transfers
554 if(dev->pktlen) { 554 if(dev->pktlen) {
555 if((length + dev->pktlen) > DEV_PKTBUF_SIZE) {
556 usbmuxd_log(LL_ERROR, "Incoming split packet is too large (%d so far), dropping!", length + dev->pktlen);
557 dev->pktlen = 0;
558 return;
559 }
555 memcpy(dev->pktbuf + dev->pktlen, buffer, length); 560 memcpy(dev->pktbuf + dev->pktlen, buffer, length);
556 struct mux_header *mhdr = (struct mux_header *)dev->pktbuf; 561 struct mux_header *mhdr = (struct mux_header *)dev->pktbuf;
557 if((length < USB_MRU) || (ntohl(mhdr->length) == length)) { 562 if((length < USB_MRU) || (ntohl(mhdr->length) == length)) {