USB device. All class drivers. There needs to be a check to make sure that the size of a returned string does not exceed the size of an allocated request buffer

This commit is contained in:
Gregory Nutt 2015-05-12 14:46:35 -06:00
parent a4ccbd8c4a
commit 6ef7977b65
5 changed files with 23 additions and 5 deletions

View File

@ -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 <gnutt@nuttx.org>
*
* 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 */

View File

@ -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 <gnutt@nuttx.org>
*
* 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];

View File

@ -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 <gnutt@nuttx.org>
*
* 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];

View File

@ -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 <gnutt@nuttx.org>
*
* 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 */

View File

@ -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 <gnutt@nuttx.org>
*
* 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];