From 421f2f549a5937b23c7c8ac8262881d6d2278982 Mon Sep 17 00:00:00 2001 From: drowe67 Date: Tue, 9 Sep 2014 02:11:09 +0000 Subject: [PATCH] code to trap and fix buffer overflow issue in USB code that was killing other variables in the sm1000 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 | 2 +- codec2-dev/stm32/usb_conf/usbd_desc.c | 9 ++++++++- 2 files changed, 9 insertions(+), 2 deletions(-) diff --git a/codec2-dev/stm32/usb_conf/usbd_conf.h b/codec2-dev/stm32/usb_conf/usbd_conf.h index 6895cb1c..0ecf0b34 100644 --- a/codec2-dev/stm32/usb_conf/usbd_conf.h +++ b/codec2-dev/stm32/usb_conf/usbd_conf.h @@ -28,7 +28,7 @@ */ #define USBD_CFG_MAX_NUM 1 #define USBD_ITF_MAX_NUM 1 -#define USB_MAX_STR_DESC_SIZ 50 +#define USB_MAX_STR_DESC_SIZ 100 /** @defgroup USB_VCP_Class_Layer_Parameter * @{ diff --git a/codec2-dev/stm32/usb_conf/usbd_desc.c b/codec2-dev/stm32/usb_conf/usbd_desc.c index 25d06d3f..36930303 100644 --- a/codec2-dev/stm32/usb_conf/usbd_desc.c +++ b/codec2-dev/stm32/usb_conf/usbd_desc.c @@ -20,6 +20,7 @@ */ /* Includes ------------------------------------------------------------------*/ +#include #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; } -- 2.25.1