usbdevice/core/core.c: fix garbage value bug

This could crash the program with -O1 and -O2 in MDK.
This commit is contained in:
Grissiom 2013-05-04 18:34:13 +08:00
parent e58d656477
commit d196a75a41
1 changed files with 6 additions and 1 deletions

View File

@ -1237,7 +1237,6 @@ rt_err_t rt_usbd_set_altsetting(uintf_t intf, rt_uint8_t value)
/* parameter check */ /* parameter check */
RT_ASSERT(intf != RT_NULL); RT_ASSERT(intf != RT_NULL);
RT_ASSERT(setting != RT_NULL);
/* find an alternate setting */ /* find an alternate setting */
setting = rt_usbd_find_altsetting(intf, value); 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"); rt_kprintf("invalid usb device\n");
break; break;
case USB_MSG_DATA_NOTIFY: 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); ep = rt_usbd_find_endpoint(device, &cls, msg.content.ep_msg.ep_addr);
if(ep != RT_NULL) if(ep != RT_NULL)
ep->handler(device, cls, msg.content.ep_msg.size); ep->handler(device, cls, msg.content.ep_msg.size);