- Notifications
You must be signed in to change notification settings - Fork 7.8k
Closed
Description
I have observed malfunctions in my program after a eeprom.readString(my_dir, my_str, my_maxLen);
I have data stored in the eeprom, and a signature to test if the eeprom is initialized or not. When the device start for first time, there is not signature, and I receive a random string, but sometimes the device becomes erratic after the call to the function.
After a lot of test I concluded that there is a problem in the function, and sometimes writes in the str* parameter beyond its limit.
I tried to fix the problem adding two lines to the EEPROM.cpp function. Now, in my case , it’s working ok. The new lines are preceded by the + symbol
size_t EEPROMClass::readString (int address, char* value, size_t maxLen){if (!value) return 0; if (address < 0 || address + maxLen > _size) return 0; uint16_t len; for (len = 0; len <= _size; len++) if (_data[address + len] == 0) break; if (address + len > _size) return 0; + if (len > maxLen)+ return 0; memcpy((uint8_t*) value, _data + address, len); value[len] = 0; return len}Thank you for your attention.
Alfonso Alejandre
Metadata
Metadata
Assignees
Labels
No labels