From 8ed215e011fcbc4966c54f96cd621f0859d3ade1 Mon Sep 17 00:00:00 2001 From: Andrei Emeltchenko Date: Mon, 25 Mar 2019 16:01:37 +0200 Subject: [PATCH] usb: usb_dc_stm32: Fix reading invalid EP Fix crash when reading invalid endpoint found in harness test. Fixes #13560 Signed-off-by: Andrei Emeltchenko --- drivers/usb/device/usb_dc_stm32.c | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/drivers/usb/device/usb_dc_stm32.c b/drivers/usb/device/usb_dc_stm32.c index 1355104d52a..ee85c51bfc3 100644 --- a/drivers/usb/device/usb_dc_stm32.c +++ b/drivers/usb/device/usb_dc_stm32.c @@ -782,7 +782,14 @@ int usb_dc_ep_read_wait(u8_t ep, u8_t *data, u32_t max_data_len, u32_t *read_bytes) { struct usb_dc_stm32_ep_state *ep_state = usb_dc_stm32_get_ep_state(ep); - u32_t read_count = ep_state->read_count; + u32_t read_count; + + if (!ep_state) { + LOG_ERR("Invalid Endpoint %x", ep); + return -EINVAL; + } + + read_count = ep_state->read_count; LOG_DBG("ep 0x%02x, %u bytes, %u+%u, %p", ep, max_data_len, ep_state->read_offset, read_count, data);