mirror of
https://github.com/esp8266/Arduino.git
synced 2025-06-03 07:02:28 +03:00
Fix RTCmem example buffer access past end (#4288)
This commit is contained in:
parent
9694b3e688
commit
83f6d83db0
@ -38,7 +38,7 @@ void setup() {
|
||||
Serial.println("Read: ");
|
||||
printMemory();
|
||||
Serial.println();
|
||||
uint32_t crcOfData = calculateCRC32(((uint8_t*) &rtcData) + 4, sizeof(rtcData) - 4);
|
||||
uint32_t crcOfData = calculateCRC32( (uint8_t*) &rtcData.data[0], sizeof(rtcData.data) );
|
||||
Serial.print("CRC32 of data: ");
|
||||
Serial.println(crcOfData, HEX);
|
||||
Serial.print("CRC32 read from RTC: ");
|
||||
@ -52,11 +52,11 @@ void setup() {
|
||||
}
|
||||
|
||||
// Generate new data set for the struct
|
||||
for (int i = 0; i < sizeof(rtcData); i++) {
|
||||
for (int i = 0; i < sizeof(rtcData.data); i++) {
|
||||
rtcData.data[i] = random(0, 128);
|
||||
}
|
||||
// Update CRC32 of data
|
||||
rtcData.crc32 = calculateCRC32(((uint8_t*) &rtcData) + 4, sizeof(rtcData) - 4);
|
||||
rtcData.crc32 = calculateCRC32( (uint8_t*) &rtcData.data[0], sizeof(rtcData.data) );
|
||||
// Write struct to RTC memory
|
||||
if (ESP.rtcUserMemoryWrite(0, (uint32_t*) &rtcData, sizeof(rtcData))) {
|
||||
Serial.println("Write: ");
|
||||
@ -90,10 +90,12 @@ uint32_t calculateCRC32(const uint8_t *data, size_t length)
|
||||
return crc;
|
||||
}
|
||||
|
||||
//prints all rtcData, including the leading crc32
|
||||
void printMemory() {
|
||||
char buf[3];
|
||||
uint8_t *ptr = (uint8_t *)&rtcData;
|
||||
for (int i = 0; i < sizeof(rtcData); i++) {
|
||||
sprintf(buf, "%02X", rtcData.data[i]);
|
||||
sprintf(buf, "%02X", ptr[i]);
|
||||
Serial.print(buf);
|
||||
if ((i + 1) % 32 == 0) {
|
||||
Serial.println();
|
||||
|
Loading…
x
Reference in New Issue
Block a user