diff --git a/src/libwolfboot.c b/src/libwolfboot.c index 17b4e077..b5bf5243 100644 --- a/src/libwolfboot.c +++ b/src/libwolfboot.c @@ -763,10 +763,11 @@ void RAMFUNCTION wolfBoot_update_trigger(void) hal_flash_erase(lastSector, SECTOR_FLAGS_SIZE); #else selSec = nvm_select_fresh_sector(PART_UPDATE); - lastSector -= selSec * WOLFBOOT_SECTOR_SIZE; - XMEMCPY(NVM_CACHE, (uint8_t*)lastSector, WOLFBOOT_SECTOR_SIZE); + XMEMCPY(NVM_CACHE, (uint8_t*)lastSector - WOLFBOOT_SECTOR_SIZE * selSec, + WOLFBOOT_SECTOR_SIZE); /* write to the non selected sector */ - hal_flash_erase(lastSector - WOLFBOOT_SECTOR_SIZE * !selSec, WOLFBOOT_SECTOR_SIZE); + hal_flash_erase(lastSector - WOLFBOOT_SECTOR_SIZE * !selSec, + WOLFBOOT_SECTOR_SIZE); hal_flash_write(lastSector - WOLFBOOT_SECTOR_SIZE * !selSec, NVM_CACHE, WOLFBOOT_SECTOR_SIZE); /* erase the previously selected sector */