Skip to content

Commit

Permalink
Merge pull request #351 from adafruit/fix-sendStringDescriptor
Browse files Browse the repository at this point in the history
fix sendStringDescriptor() maxlen uitn8_t to uint32_t
  • Loading branch information
hathach authored Nov 27, 2023
2 parents e2b78cb + f85cf1b commit 21ac762
Show file tree
Hide file tree
Showing 2 changed files with 6 additions and 4 deletions.
2 changes: 1 addition & 1 deletion cores/arduino/USB/USBAPI.h
Original file line number Diff line number Diff line change
Expand Up @@ -85,7 +85,7 @@ class USBDeviceClass {
uint32_t sendControl(int /* ep */, const void *data, uint32_t len) { return sendControl(data, len); }
uint32_t recvControl(void *data, uint32_t len);
uint32_t sendConfiguration(uint32_t maxlen);
bool sendStringDescriptor(const uint8_t *string, uint8_t maxlen);
bool sendStringDescriptor(const uint8_t *string, uint32_t maxlen);
void initControl(int end);
uint8_t SendInterfaces(uint32_t* total);
void packMessages(bool val);
Expand Down
8 changes: 5 additions & 3 deletions cores/arduino/USB/USBCore.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -110,12 +110,12 @@ static EPHandler *epHandlers[7] = {NULL, NULL, NULL, NULL, NULL, NULL, NULL};
// Send a USB descriptor string. The string is stored as a
// plain ASCII string but is sent out as UTF-16 with the
// correct 2-byte prefix
bool USBDeviceClass::sendStringDescriptor(const uint8_t *string, uint8_t maxlen)
bool USBDeviceClass::sendStringDescriptor(const uint8_t *string, uint32_t maxlen)
{
if (maxlen < 2)
return false;

uint8_t buffer[maxlen];
uint8_t* buffer = (uint8_t*)malloc(maxlen);
buffer[0] = strlen((const char*)string) * 2 + 2;
buffer[1] = 0x03;

Expand All @@ -126,7 +126,9 @@ bool USBDeviceClass::sendStringDescriptor(const uint8_t *string, uint8_t maxlen)
buffer[i] = 0;
}

return USBDevice.sendControl(buffer, i);
bool ret = USBDevice.sendControl(buffer, i);
free(buffer);
return ret;
}

bool _dry_run = false;
Expand Down

0 comments on commit 21ac762

Please sign in to comment.