From 80934f3e3bdf07ec3076b81790fe272f000feb38 Mon Sep 17 00:00:00 2001 From: Conor Patrick Date: Sun, 30 Dec 2018 23:08:03 -0500 Subject: [PATCH] dont trust wIndex --- targets/stm32l442/lib/usbd/usbd_composite.c | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/targets/stm32l442/lib/usbd/usbd_composite.c b/targets/stm32l442/lib/usbd/usbd_composite.c index 06fee5c..64da3dc 100644 --- a/targets/stm32l442/lib/usbd/usbd_composite.c +++ b/targets/stm32l442/lib/usbd/usbd_composite.c @@ -226,7 +226,11 @@ static uint8_t USBD_Composite_Setup (USBD_HandleTypeDef *pdev, USBD_SetupReqType int i; switch (req->bmRequest & USB_REQ_TYPE_MASK) { case USB_REQ_TYPE_CLASS : - return USBD_Classes[req->wIndex]->Setup(pdev, req); + if (req->wIndex < NUM_INTERFACES) + return USBD_Classes[req->wIndex]->Setup(pdev, req); + else + return USBD_FAIL; + case USB_REQ_TYPE_STANDARD: switch (req->bRequest) { @@ -242,7 +246,10 @@ static uint8_t USBD_Composite_Setup (USBD_HandleTypeDef *pdev, USBD_SetupReqType case USB_REQ_GET_INTERFACE : case USB_REQ_SET_INTERFACE : - return USBD_Classes[req->wIndex]->Setup(pdev, req); + if (req->wIndex < NUM_INTERFACES) + return USBD_Classes[req->wIndex]->Setup(pdev, req); + else + return USBD_FAIL; } } return USBD_OK;