diff options
| author | Grissiom <[email protected]> | 2013-05-04 18:34:13 +0800 |
|---|---|---|
| committer | Grissiom <[email protected]> | 2013-05-04 18:34:13 +0800 |
| commit | d196a75a41ab5c5bcde45f9e4c17bd354ac0be56 (patch) | |
| tree | 96c43aa3861fe3bae7b230aae0ab5171326eecad /components | |
| parent | e58d6564778f5f860845a47332126ef0afce7667 (diff) | |
usbdevice/core/core.c: fix garbage value bug
This could crash the program with -O1 and -O2 in MDK.
Diffstat (limited to 'components')
| -rw-r--r-- | components/drivers/usb/usbdevice/core/core.c | 7 |
1 files changed, 6 insertions, 1 deletions
diff --git a/components/drivers/usb/usbdevice/core/core.c b/components/drivers/usb/usbdevice/core/core.c index c79820642a..2f4a21eee4 100644 --- a/components/drivers/usb/usbdevice/core/core.c +++ b/components/drivers/usb/usbdevice/core/core.c @@ -1237,7 +1237,6 @@ rt_err_t rt_usbd_set_altsetting(uintf_t intf, rt_uint8_t value) /* parameter check */ RT_ASSERT(intf != RT_NULL); - RT_ASSERT(setting != RT_NULL); /* find an alternate setting */ setting = rt_usbd_find_altsetting(intf, value); @@ -1308,6 +1307,12 @@ static void rt_usbd_thread_entry(void* parameter) rt_kprintf("invalid usb device\n"); break; case USB_MSG_DATA_NOTIFY: + device = rt_usbd_find_device(msg.dcd); + if(device == RT_NULL) + { + rt_kprintf("invalid usb device\n"); + break; + } ep = rt_usbd_find_endpoint(device, &cls, msg.content.ep_msg.ep_addr); if(ep != RT_NULL) ep->handler(device, cls, msg.content.ep_msg.size); |
