From b6516a0f4c939f3e75e5f991d9842b5f106f7b3f Mon Sep 17 00:00:00 2001 From: FromDarkHell Date: Sun, 21 Jun 2026 12:48:47 -0500 Subject: [PATCH 1/2] increase size of desc_str for USBD_Device --- src/arduino/Adafruit_USBD_Device.cpp | 2 +- src/arduino/Adafruit_USBD_Device.h | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src/arduino/Adafruit_USBD_Device.cpp b/src/arduino/Adafruit_USBD_Device.cpp index b044e15e..69579564 100644 --- a/src/arduino/Adafruit_USBD_Device.cpp +++ b/src/arduino/Adafruit_USBD_Device.cpp @@ -319,7 +319,7 @@ uint16_t const *Adafruit_USBD_Device::descriptor_string_cb(uint8_t index, return NULL; } - chr_count = strcpy_utf16(_desc_str_arr[index], _desc_str + 1, 32); + chr_count = strcpy_utf16(_desc_str_arr[index], _desc_str + 1, 127); break; } diff --git a/src/arduino/Adafruit_USBD_Device.h b/src/arduino/Adafruit_USBD_Device.h index 48c4d384..eb1fb548 100644 --- a/src/arduino/Adafruit_USBD_Device.h +++ b/src/arduino/Adafruit_USBD_Device.h @@ -56,7 +56,7 @@ class Adafruit_USBD_Device { // String descriptor const char *_desc_str_arr[STRING_DESCRIPTOR_MAX]; uint8_t _desc_str_count; - uint16_t _desc_str[32 + 1]; // up to 32 unicode characters with headers + uint16_t _desc_str[127 + 1]; // up to 127 unicode characters (254 bytes) with headers public: Adafruit_USBD_Device(void); From 382d0efa043be95a2c4b595c0574932a7a6cc0c7 Mon Sep 17 00:00:00 2001 From: FromDarkHell Date: Sun, 21 Jun 2026 12:53:54 -0500 Subject: [PATCH 2/2] Fix off-by-one error --- src/arduino/Adafruit_USBD_Device.cpp | 2 +- src/arduino/Adafruit_USBD_Device.h | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src/arduino/Adafruit_USBD_Device.cpp b/src/arduino/Adafruit_USBD_Device.cpp index 69579564..3d2a0148 100644 --- a/src/arduino/Adafruit_USBD_Device.cpp +++ b/src/arduino/Adafruit_USBD_Device.cpp @@ -319,7 +319,7 @@ uint16_t const *Adafruit_USBD_Device::descriptor_string_cb(uint8_t index, return NULL; } - chr_count = strcpy_utf16(_desc_str_arr[index], _desc_str + 1, 127); + chr_count = strcpy_utf16(_desc_str_arr[index], _desc_str + 1, 126); break; } diff --git a/src/arduino/Adafruit_USBD_Device.h b/src/arduino/Adafruit_USBD_Device.h index eb1fb548..3822c852 100644 --- a/src/arduino/Adafruit_USBD_Device.h +++ b/src/arduino/Adafruit_USBD_Device.h @@ -56,7 +56,7 @@ class Adafruit_USBD_Device { // String descriptor const char *_desc_str_arr[STRING_DESCRIPTOR_MAX]; uint8_t _desc_str_count; - uint16_t _desc_str[127 + 1]; // up to 127 unicode characters (254 bytes) with headers + uint16_t _desc_str[126 + 1]; // up to 126 unicode characters (252 bytes) with headers public: Adafruit_USBD_Device(void);