From 5d00b6eb16e1fb411ba0baec5d9a96db160dcbc8 Mon Sep 17 00:00:00 2001 From: me-no-dev Date: Wed, 24 Feb 2021 18:47:11 +0200 Subject: [PATCH] Fix case where EEPROM will try to return longer string than it should Fixes: https://github.com/espressif/arduino-esp32/issues/4768 --- libraries/EEPROM/src/EEPROM.cpp | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/libraries/EEPROM/src/EEPROM.cpp b/libraries/EEPROM/src/EEPROM.cpp index 7f4ab090..a9d39abf 100644 --- a/libraries/EEPROM/src/EEPROM.cpp +++ b/libraries/EEPROM/src/EEPROM.cpp @@ -382,6 +382,9 @@ size_t EEPROMClass::readString (int address, char* value, size_t maxLen) if (address + len > _size) return 0; + if (len > maxLen) + return 0; //Maybe return part of the string instead? + memcpy((uint8_t*) value, _data + address, len); value[len] = 0; return len; @@ -400,7 +403,7 @@ String EEPROMClass::readString (int address) if (address + len > _size) return String(); - char value[len]; + char value[len+1]; memcpy((uint8_t*) value, _data + address, len); value[len] = 0; return String(value);