1
0
mirror of https://github.com/esp8266/Arduino.git synced 2025-06-07 16:23:38 +03:00

fix possible null ptr in EEPROM.cpp

This commit is contained in:
Markus Sattler 2015-05-17 13:54:03 +02:00
parent d15225430e
commit a4adfab517

View File

@ -41,7 +41,7 @@ EEPROMClass::EEPROMClass()
void EEPROMClass::begin(size_t size) void EEPROMClass::begin(size_t size)
{ {
if (size < 0) if (size <= 0)
return; return;
if (size > SPI_FLASH_SEC_SIZE) if (size > SPI_FLASH_SEC_SIZE)
size = SPI_FLASH_SEC_SIZE; size = SPI_FLASH_SEC_SIZE;
@ -60,8 +60,9 @@ void EEPROMClass::end()
return; return;
commit(); commit();
if(_data) {
delete[] _data; delete[] _data;
}
_data = 0; _data = 0;
_size = 0; _size = 0;
} }
@ -71,6 +72,8 @@ uint8_t EEPROMClass::read(int address)
{ {
if (address < 0 || (size_t)address >= _size) if (address < 0 || (size_t)address >= _size)
return 0; return 0;
if(!_data)
return 0;
return _data[address]; return _data[address];
} }
@ -79,6 +82,8 @@ void EEPROMClass::write(int address, uint8_t value)
{ {
if (address < 0 || (size_t)address >= _size) if (address < 0 || (size_t)address >= _size)
return; return;
if(!_data)
return;
_data[address] = value; _data[address] = value;
_dirty = true; _dirty = true;
@ -91,6 +96,8 @@ bool EEPROMClass::commit()
return false; return false;
if(!_dirty) if(!_dirty)
return true; return true;
if(!_data)
return false;
noInterrupts(); noInterrupts();
if(spi_flash_erase_sector(CONFIG_SECTOR) == SPI_FLASH_RESULT_OK) { if(spi_flash_erase_sector(CONFIG_SECTOR) == SPI_FLASH_RESULT_OK) {