From 9f71f47e6f214b4451ab56fc31954d6a755a362d Mon Sep 17 00:00:00 2001 From: Frank <91616163+softhack007@users.noreply.github.com> Date: Thu, 14 Dec 2023 15:58:45 +0100 Subject: [PATCH] oappend robustness improvement obuf is reset to nullptr in some cases --- wled00/util.cpp | 13 ++++++++----- 1 file changed, 8 insertions(+), 5 deletions(-) diff --git a/wled00/util.cpp b/wled00/util.cpp index fb8b5e59..520f4bb4 100644 --- a/wled00/util.cpp +++ b/wled00/util.cpp @@ -148,11 +148,14 @@ bool oappendi(int i) bool oappend(const char* txt) { uint16_t len = strlen(txt); - if (olen + len >= SETTINGS_STACK_BUF_SIZE) { - USER_PRINT(F("oappend() error: buffer full. Increase SETTINGS_STACK_BUF_SIZE for ")); - USER_PRINTF("%2u bytes \t\"", len /*1 + olen + len - SETTINGS_STACK_BUF_SIZE*/); - USER_PRINT(txt); - USER_PRINTLN(F("\"")); + if ((obuf == nullptr) || (olen + len >= SETTINGS_STACK_BUF_SIZE)) { // sanity checks + if (obuf == nullptr) { USER_PRINTLN(F("oappend() error: obuf == nullptr.")); + } else { + USER_PRINT(F("oappend() error: buffer full. Increase SETTINGS_STACK_BUF_SIZE for ")); + USER_PRINTF("%2u bytes \t\"", len /*1 + olen + len - SETTINGS_STACK_BUF_SIZE*/); + USER_PRINT(txt); + USER_PRINTLN(F("\"")); + } return false; // buffer full } strcpy(obuf + olen, txt);