diff --git a/drivers/usbdev/cdcacm.h b/drivers/usbdev/cdcacm.h index aaad0faa62b..23001eebd58 100644 --- a/drivers/usbdev/cdcacm.h +++ b/drivers/usbdev/cdcacm.h @@ -1,7 +1,7 @@ /**************************************************************************** * drivers/usbdev/cdcacm.h * - * Copyright (C) 2011-2012 Gregory Nutt. All rights reserved. + * Copyright (C) 2011-2012, 2015 Gregory Nutt. All rights reserved. * Author: Gregory Nutt * * Redistribution and use in source and binary forms, with or without @@ -119,6 +119,7 @@ */ #define CDCACM_MXDESCLEN (64) +#defien CDCACM_MAXSTRLEN (CDCACM_MXDESCLEN-2) /* Device descriptor values */ diff --git a/drivers/usbdev/cdcacm_desc.c b/drivers/usbdev/cdcacm_desc.c index f2c53194e42..a2d2446ad40 100644 --- a/drivers/usbdev/cdcacm_desc.c +++ b/drivers/usbdev/cdcacm_desc.c @@ -1,7 +1,7 @@ /**************************************************************************** * drivers/usbdev/cdcacm_desc.c * - * Copyright (C) 2011-2012 Gregory Nutt. All rights reserved. + * Copyright (C) 2011-2012, 2015 Gregory Nutt. All rights reserved. * Author: Gregory Nutt * * Redistribution and use in source and binary forms, with or without @@ -472,6 +472,11 @@ int cdcacm_mkstrdesc(uint8_t id, struct usb_strdesc_s *strdesc) */ len = strlen(str); + if (len > (CDCACM_MAXSTRLEN / 2)) + { + len = (CDCACM_MAXSTRLEN / 2); + } + for (i = 0, ndata = 0; i < len; i++, ndata += 2) { strdesc->data[ndata] = str[i]; diff --git a/drivers/usbdev/pl2303.c b/drivers/usbdev/pl2303.c index 5adb02b2169..256e85049ad 100644 --- a/drivers/usbdev/pl2303.c +++ b/drivers/usbdev/pl2303.c @@ -1,7 +1,7 @@ /**************************************************************************** * drivers/usbdev/pl2303.c * - * Copyright (C) 2008-2013 Gregory Nutt. All rights reserved. + * Copyright (C) 2008-2013, 2015 Gregory Nutt. All rights reserved. * Author: Gregory Nutt * * This logic emulates the Prolific PL2303 serial/USB converter @@ -194,6 +194,7 @@ /* Buffer big enough for any of our descriptors */ #define PL2303_MXDESCLEN (64) +#defien PL2303_MAXSTRLEN (PL2303_MXDESCLEN-2) /* Vender specific control requests *******************************************/ @@ -871,6 +872,11 @@ static int usbclass_mkstrdesc(uint8_t id, struct usb_strdesc_s *strdesc) */ len = strlen(str); + if (len > (PL2303_MAXSTRLEN / 2)) + { + len = (PL2303_MAXSTRLEN / 2); + } + for (i = 0, ndata = 0; i < len; i++, ndata += 2) { strdesc->data[ndata] = str[i]; diff --git a/drivers/usbdev/usbmsc.h b/drivers/usbdev/usbmsc.h index c98e275bcea..03b3759ded3 100644 --- a/drivers/usbdev/usbmsc.h +++ b/drivers/usbdev/usbmsc.h @@ -1,7 +1,7 @@ /**************************************************************************** * drivers/usbdev/usbmsc.h * - * Copyright (C) 2008-2013 Gregory Nutt. All rights reserved. + * Copyright (C) 2008-2013, 2015 Gregory Nutt. All rights reserved. * Author: Gregory Nutt * * Mass storage class device. Bulk-only with SCSI subclass. @@ -269,6 +269,7 @@ /* Big enough to hold our biggest descriptor */ #define USBMSC_MXDESCLEN (64) +#defien USBMSC_MAXSTRLEN (USBMSC_MXDESCLEN-2) /* String language */ diff --git a/drivers/usbdev/usbmsc_desc.c b/drivers/usbdev/usbmsc_desc.c index 87fe6d0403f..e958392f4ef 100644 --- a/drivers/usbdev/usbmsc_desc.c +++ b/drivers/usbdev/usbmsc_desc.c @@ -1,7 +1,7 @@ /**************************************************************************** * drivers/usbdev/usbmsc_desc.c * - * Copyright (C) 2011-2012 Gregory Nutt. All rights reserved. + * Copyright (C) 2011-2012, 2015 Gregory Nutt. All rights reserved. * Author: Gregory Nutt * * Redistribution and use in source and binary forms, with or without @@ -287,6 +287,11 @@ int usbmsc_mkstrdesc(uint8_t id, struct usb_strdesc_s *strdesc) */ len = strlen(str); + if (len > (USBMSC_MAXSTRLEN / 2)) + { + len = (USBMSC_MAXSTRLEN / 2); + } + for (i = 0, ndata = 0; i < len; i++, ndata += 2) { strdesc->data[ndata] = str[i];