From 2b5caf34b742ba8c1bdf6d665d0b959177ea4ca3 Mon Sep 17 00:00:00 2001 From: Tomas Rezucha Date: Thu, 23 Feb 2023 11:16:37 +0100 Subject: [PATCH] tinyusb: Do not access string descriptor array out of boundaries The previous version of esp_tinyusb (v1.0.0) always assumed 8 string descriptors. In case the user passed a smaller array of descriptors, esp_tinyusb accessed memory outside of the array. This is fixed esp_tinyusb v1.1.0 by https://github.com/espressif/idf-extra-components/commit/046cc4b02f524d5c7e3e56480a473cfe844dc3d6 --- .../peripherals/usb/device/tusb_hid/main/idf_component.yml | 2 +- .../usb/device/tusb_hid/main/tusb_hid_example_main.c | 3 ++- .../peripherals/usb/device/tusb_midi/main/idf_component.yml | 2 +- .../peripherals/usb/device/tusb_midi/main/tusb_midi_main.c | 3 ++- .../peripherals/usb/device/tusb_msc/main/idf_component.yml | 2 +- examples/peripherals/usb/device/tusb_msc/main/tusb_msc_main.c | 1 + 6 files changed, 8 insertions(+), 5 deletions(-) diff --git a/examples/peripherals/usb/device/tusb_hid/main/idf_component.yml b/examples/peripherals/usb/device/tusb_hid/main/idf_component.yml index ff67b5da1e..b60893c81e 100644 --- a/examples/peripherals/usb/device/tusb_hid/main/idf_component.yml +++ b/examples/peripherals/usb/device/tusb_hid/main/idf_component.yml @@ -1,4 +1,4 @@ ## IDF Component Manager Manifest File dependencies: - espressif/esp_tinyusb: "^1" + espressif/esp_tinyusb: "^1.1" idf: "^5.0" diff --git a/examples/peripherals/usb/device/tusb_hid/main/tusb_hid_example_main.c b/examples/peripherals/usb/device/tusb_hid/main/tusb_hid_example_main.c index 617602e874..022a46dfbe 100644 --- a/examples/peripherals/usb/device/tusb_hid/main/tusb_hid_example_main.c +++ b/examples/peripherals/usb/device/tusb_hid/main/tusb_hid_example_main.c @@ -1,5 +1,5 @@ /* - * SPDX-FileCopyrightText: 2022 Espressif Systems (Shanghai) CO LTD + * SPDX-FileCopyrightText: 2022-2023 Espressif Systems (Shanghai) CO LTD * * SPDX-License-Identifier: Unlicense OR CC0-1.0 */ @@ -167,6 +167,7 @@ void app_main(void) const tinyusb_config_t tusb_cfg = { .device_descriptor = NULL, .string_descriptor = hid_string_descriptor, + .string_descriptor_count = sizeof(hid_string_descriptor) / sizeof(hid_string_descriptor[0]), .external_phy = false, .configuration_descriptor = hid_configuration_descriptor, }; diff --git a/examples/peripherals/usb/device/tusb_midi/main/idf_component.yml b/examples/peripherals/usb/device/tusb_midi/main/idf_component.yml index ff67b5da1e..b60893c81e 100644 --- a/examples/peripherals/usb/device/tusb_midi/main/idf_component.yml +++ b/examples/peripherals/usb/device/tusb_midi/main/idf_component.yml @@ -1,4 +1,4 @@ ## IDF Component Manager Manifest File dependencies: - espressif/esp_tinyusb: "^1" + espressif/esp_tinyusb: "^1.1" idf: "^5.0" diff --git a/examples/peripherals/usb/device/tusb_midi/main/tusb_midi_main.c b/examples/peripherals/usb/device/tusb_midi/main/tusb_midi_main.c index 4f67323792..85f4467096 100644 --- a/examples/peripherals/usb/device/tusb_midi/main/tusb_midi_main.c +++ b/examples/peripherals/usb/device/tusb_midi/main/tusb_midi_main.c @@ -3,7 +3,7 @@ * * SPDX-License-Identifier: MIT * - * SPDX-FileContributor: 2022 Espressif Systems (Shanghai) CO LTD + * SPDX-FileContributor: 2022-2023 Espressif Systems (Shanghai) CO LTD */ #include @@ -137,6 +137,7 @@ void app_main(void) tinyusb_config_t const tusb_cfg = { .device_descriptor = NULL, // If device_descriptor is NULL, tinyusb_driver_install() will use Kconfig .string_descriptor = s_str_desc, + .string_descriptor_count = sizeof(s_str_desc) / sizeof(s_str_desc[0]), .external_phy = false, .configuration_descriptor = s_midi_cfg_desc, }; diff --git a/examples/peripherals/usb/device/tusb_msc/main/idf_component.yml b/examples/peripherals/usb/device/tusb_msc/main/idf_component.yml index ff67b5da1e..b60893c81e 100644 --- a/examples/peripherals/usb/device/tusb_msc/main/idf_component.yml +++ b/examples/peripherals/usb/device/tusb_msc/main/idf_component.yml @@ -1,4 +1,4 @@ ## IDF Component Manager Manifest File dependencies: - espressif/esp_tinyusb: "^1" + espressif/esp_tinyusb: "^1.1" idf: "^5.0" diff --git a/examples/peripherals/usb/device/tusb_msc/main/tusb_msc_main.c b/examples/peripherals/usb/device/tusb_msc/main/tusb_msc_main.c index 2cd70fb14b..38a5d13e28 100644 --- a/examples/peripherals/usb/device/tusb_msc/main/tusb_msc_main.c +++ b/examples/peripherals/usb/device/tusb_msc/main/tusb_msc_main.c @@ -482,6 +482,7 @@ void app_main(void) const tinyusb_config_t tusb_cfg = { .device_descriptor = &descriptor_config, .string_descriptor = string_desc_arr, + .string_descriptor_count = sizeof(string_desc_arr) / sizeof(string_desc_arr[0]), .external_phy = false, .configuration_descriptor = desc_configuration, .self_powered = true,