From 10ca7c83caff3124c59a66a97c00b834225eb199 Mon Sep 17 00:00:00 2001 From: Frank <91616163+softhack007@users.noreply.github.com> Date: Fri, 14 Apr 2023 18:33:07 +0200 Subject: [PATCH] enumerateLedmaps: prevent buffer overflow make sure that bounds of char fileName[33] are not exceeded by sprintf. --- wled00/FX_fcn.cpp | 8 ++++---- wled00/wled.h | 2 +- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/wled00/FX_fcn.cpp b/wled00/FX_fcn.cpp index 58dd2624..ea675195 100644 --- a/wled00/FX_fcn.cpp +++ b/wled00/FX_fcn.cpp @@ -1319,9 +1319,9 @@ uint8_t * Segment::getAudioPalette(int pal) { // enumerate all ledmapX.json files on FS and extract ledmap names if existing void WS2812FX::enumerateLedmaps() { ledMaps = 1; - for (size_t i=1; i<10; i++) { + for (int i=1; i<10; i++) { char fileName[33]; - sprintf_P(fileName, PSTR("/ledmap%d.json"), i); + snprintf_P(fileName, sizeof(fileName), PSTR("/ledmap%d.json"), i); bool isFile = WLED_FS.exists(fileName); #ifndef ESP8266 @@ -1364,8 +1364,8 @@ void WS2812FX::enumerateLedmaps() { uint8_t segment_index = 0; for (segment &seg : _segments) { if (seg.name != nullptr && strcmp(seg.name, "") != 0) { - char fileName[32]; - sprintf_P(fileName, PSTR("/lm%s.json"), seg.name); + char fileName[33]; + snprintf_P(fileName, sizeof(fileName), PSTR("/lm%s.json"), seg.name); bool isFile = WLED_FS.exists(fileName); if (isFile) ledMaps |= 1 << (10+segment_index); } diff --git a/wled00/wled.h b/wled00/wled.h index fc550530..cdb2b7bd 100644 --- a/wled00/wled.h +++ b/wled00/wled.h @@ -8,7 +8,7 @@ */ // version code in format yymmddb (b = daily build) -#define VERSION 2304080 +#define VERSION 2304140 //uncomment this if you have a "my_config.h" file you'd like to use //#define WLED_USE_MY_CONFIG