From 32ee52d8a68953b46c5a505d469c5bb32d2699c7 Mon Sep 17 00:00:00 2001 From: Chen Chen Date: Tue, 24 Feb 2026 18:10:21 +0800 Subject: [PATCH] fix(ledc): add error check for potential out-of-bounds read --- components/esp_driver_ledc/include/driver/ledc.h | 2 +- components/esp_driver_ledc/src/ledc.c | 1 + 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/components/esp_driver_ledc/include/driver/ledc.h b/components/esp_driver_ledc/include/driver/ledc.h index 4ce85c0f50d..b29ebda6fd5 100644 --- a/components/esp_driver_ledc/include/driver/ledc.h +++ b/components/esp_driver_ledc/include/driver/ledc.h @@ -475,7 +475,7 @@ esp_err_t ledc_set_fade_with_time(ledc_mode_t speed_mode, ledc_channel_t channel * - ESP_OK Success * - ESP_ERR_INVALID_ARG Intr flag error * - ESP_ERR_NOT_FOUND Failed to find available interrupt source - * - ESP_ERR_INVALID_STATE Fade function already installed + * - ESP_ERR_INVALID_STATE Fade function already installed / LEDC not initialized */ esp_err_t ledc_fade_func_install(int intr_alloc_flags); diff --git a/components/esp_driver_ledc/src/ledc.c b/components/esp_driver_ledc/src/ledc.c index 66c0fc7ec07..3a951c14e8f 100644 --- a/components/esp_driver_ledc/src/ledc.c +++ b/components/esp_driver_ledc/src/ledc.c @@ -1578,6 +1578,7 @@ esp_err_t ledc_fade_func_install(int intr_alloc_flags) break; } } + LEDC_CHECK(speed_mode < LEDC_SPEED_MODE_MAX, "LEDC not initialized, call ledc_timer_config first", ESP_ERR_INVALID_STATE); //OR intr_alloc_flags with ESP_INTR_FLAG_IRAM because the fade isr is in IRAM return esp_intr_alloc_intrstatus(