Browse Source

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

This could crash the program with -O1 and -O2 in MDK.
Grissiom 12 years ago
parent
commit
d196a75a41
1 changed files with 6 additions and 1 deletions
  1. 6 1
      components/drivers/usb/usbdevice/core/core.c

+ 6 - 1
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 */
     /* 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);