code to trap and fix buffer overflow issue in USB code that was killing other variabl...
authordrowe67 <drowe67@01035d8c-6547-0410-b346-abe4f91aad63>
Tue, 9 Sep 2014 02:11:09 +0000 (02:11 +0000)
committerdrowe67 <drowe67@01035d8c-6547-0410-b346-abe4f91aad63>
Tue, 9 Sep 2014 02:11:09 +0000 (02:11 +0000)
git-svn-id: https://svn.code.sf.net/p/freetel/code@1834 01035d8c-6547-0410-b346-abe4f91aad63

codec2-dev/stm32/usb_conf/usbd_conf.h
codec2-dev/stm32/usb_conf/usbd_desc.c

index 6895cb1c1e1e50fbf46b14bc86f2e3f407ea8c32..0ecf0b344178fb5a7fc70c88513589049a4caddd 100644 (file)
@@ -28,7 +28,7 @@
   */ 
 #define USBD_CFG_MAX_NUM                1
 #define USBD_ITF_MAX_NUM                1
-#define USB_MAX_STR_DESC_SIZ            5
+#define USB_MAX_STR_DESC_SIZ            10
 
 /** @defgroup USB_VCP_Class_Layer_Parameter
   * @{
index 25d06d3f3eff7e83bf4f4e73c5b9442860cbf178..3693030388f583e5771b97ac33fb03db9d51cf7d 100644 (file)
@@ -20,6 +20,7 @@
   */ 
 
 /* Includes ------------------------------------------------------------------*/
+#include <assert.h>
 #include "usbd_core.h"
 #include "usbd_desc.h"
 #include "usbd_req.h"
@@ -212,7 +213,6 @@ uint8_t *  USBD_USR_LangIDStrDescriptor( uint8_t speed , uint16_t *length)
 */
 uint8_t *  USBD_USR_ProductStrDescriptor( uint8_t speed , uint16_t *length)
 {
   
   if(speed == 0)
   {   
@@ -222,6 +222,9 @@ uint8_t *  USBD_USR_ProductStrDescriptor( uint8_t speed , uint16_t *length)
   {
     USBD_GetString ((uint8_t*)USBD_PRODUCT_FS_STRING, USBD_StrDesc, length);
   }
+  
+  assert(*length < USB_MAX_STR_DESC_SIZ);
+
   return USBD_StrDesc;
 }
 
@@ -235,6 +238,7 @@ uint8_t *  USBD_USR_ProductStrDescriptor( uint8_t speed , uint16_t *length)
 uint8_t *  USBD_USR_ManufacturerStrDescriptor( uint8_t speed , uint16_t *length)
 {
   USBD_GetString ((uint8_t*)USBD_MANUFACTURER_STRING, USBD_StrDesc, length);
+  assert(*length < USB_MAX_STR_DESC_SIZ);
   return USBD_StrDesc;
 }
 
@@ -255,6 +259,7 @@ uint8_t *  USBD_USR_SerialStrDescriptor( uint8_t speed , uint16_t *length)
   {
     USBD_GetString ((uint8_t*)USBD_SERIALNUMBER_FS_STRING, USBD_StrDesc, length);
   }
+  assert(*length < USB_MAX_STR_DESC_SIZ);
   return USBD_StrDesc;
 }
 
@@ -275,6 +280,7 @@ uint8_t *  USBD_USR_ConfigStrDescriptor( uint8_t speed , uint16_t *length)
   {
     USBD_GetString ((uint8_t*)USBD_CONFIGURATION_FS_STRING, USBD_StrDesc, length);
   }
+  assert(*length < USB_MAX_STR_DESC_SIZ);
   return USBD_StrDesc;  
 }
 
@@ -296,6 +302,7 @@ uint8_t *  USBD_USR_InterfaceStrDescriptor( uint8_t speed , uint16_t *length)
   {
     USBD_GetString ((uint8_t*)USBD_INTERFACE_FS_STRING, USBD_StrDesc, length);
   }
+  assert(*length < USB_MAX_STR_DESC_SIZ);
   return USBD_StrDesc;  
 }