summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--payloads/libpayload/drivers/usb/usbmsc.c5
1 files changed, 5 insertions, 0 deletions
diff --git a/payloads/libpayload/drivers/usb/usbmsc.c b/payloads/libpayload/drivers/usb/usbmsc.c
index 62428b6ebe..ccd693a84d 100644
--- a/payloads/libpayload/drivers/usb/usbmsc.c
+++ b/payloads/libpayload/drivers/usb/usbmsc.c
@@ -200,6 +200,11 @@ wrap_cbw (cbw_t *cbw, int datalen, cbw_direction dir, const u8 *cmd,
{
memset (cbw, 0, sizeof (cbw_t));
+ /* commands are typically shorter, but we don't want overflows */
+ if (cmdlen > sizeof(cbw->CBWCB)) {
+ cmdlen = sizeof(cbw->CBWCB);
+ }
+
cbw->dCBWSignature = cbw_signature;
cbw->dCBWTag = ++tag;
cbw->bCBWLUN = lun;