diff --git a/wled00/json.cpp b/wled00/json.cpp index 5fa4c04fe..6ac19189c 100644 --- a/wled00/json.cpp +++ b/wled00/json.cpp @@ -974,9 +974,10 @@ void serializeNodes(JsonObject root) // deserializes mode data string into JsonArray void serializeModeData(JsonArray fxdata) { - char lineBuffer[128]; + char lineBuffer[256]; for (size_t i = 0; i < strip.getModeCount(); i++) { - strncpy_P(lineBuffer, strip.getModeData(i), 127); + strncpy_P(lineBuffer, strip.getModeData(i), 255); + lineBuffer[255] = '\0'; // terminate string if (lineBuffer[0] != 0) { char* dataPtr = strchr(lineBuffer,'@'); if (dataPtr) fxdata.add(dataPtr+1); @@ -987,10 +988,12 @@ void serializeModeData(JsonArray fxdata) // deserializes mode names string into JsonArray // also removes effect data extensions (@...) from deserialised names -void serializeModeNames(JsonArray arr) { - char lineBuffer[128]; +void serializeModeNames(JsonArray arr) +{ + char lineBuffer[256]; for (size_t i = 0; i < strip.getModeCount(); i++) { - strncpy_P(lineBuffer, strip.getModeData(i), 127); + strncpy_P(lineBuffer, strip.getModeData(i), 255); + lineBuffer[255] = '\0'; // terminate string if (lineBuffer[0] != 0) { char* dataPtr = strchr(lineBuffer,'@'); if (dataPtr) *dataPtr = 0; // terminate mode data after name diff --git a/wled00/util.cpp b/wled00/util.cpp index b8dea2555..220b4773b 100644 --- a/wled00/util.cpp +++ b/wled00/util.cpp @@ -233,7 +233,8 @@ uint8_t extractModeName(uint8_t mode, const char *src, char *dest, uint8_t maxLe if (mode < strip.getModeCount()) { char lineBuffer[256]; //strcpy_P(lineBuffer, (const char*)pgm_read_dword(&(WS2812FX::_modeData[mode]))); - strcpy_P(lineBuffer, strip.getModeData(mode)); + strncpy_P(lineBuffer, strip.getModeData(mode), 255); + lineBuffer[255] = '\0'; // terminate string size_t len = strlen(lineBuffer); size_t j = 0; for (; j < maxLen && j < len; j++) { @@ -355,9 +356,9 @@ uint8_t extractModeSlider(uint8_t mode, uint8_t slider, char *dest, uint8_t maxL int16_t extractModeDefaults(uint8_t mode, const char *segVar) { if (mode < strip.getModeCount()) { - char lineBuffer[128] = ""; - strncpy_P(lineBuffer, strip.getModeData(mode), 127); - lineBuffer[127] = '\0'; // terminate string + char lineBuffer[256]; + strncpy_P(lineBuffer, strip.getModeData(mode), 255); + lineBuffer[255] = '\0'; // terminate string if (lineBuffer[0] != 0) { char* startPtr = strrchr(lineBuffer, ';'); // last ";" in FX data if (!startPtr) return -1;