mirror of
https://github.com/trezor/trezor-firmware.git
synced 2025-08-01 19:38:33 +00:00
norcow: fix bug
This commit is contained in:
parent
7f5192701f
commit
b39b4a4947
@ -72,7 +72,7 @@ static void norcow_erase(uint8_t sector, secbool set_magic)
|
|||||||
ensure(sectrue * (sector <= NORCOW_SECTOR_COUNT), "invalid sector");
|
ensure(sectrue * (sector <= NORCOW_SECTOR_COUNT), "invalid sector");
|
||||||
ensure(flash_erase_sectors(&norcow_sectors[sector], 1, NULL), "erase failed");
|
ensure(flash_erase_sectors(&norcow_sectors[sector], 1, NULL), "erase failed");
|
||||||
if (sectrue == set_magic) {
|
if (sectrue == set_magic) {
|
||||||
ensure(norcow_write(norcow_active_sector, 0, NORCOW_MAGIC, NULL, 0), "set magic failed");
|
ensure(norcow_write(sector, 0, NORCOW_MAGIC, NULL, 0), "set magic failed");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -206,13 +206,15 @@ static void compact()
|
|||||||
// copy the last item
|
// copy the last item
|
||||||
uint32_t posw;
|
uint32_t posw;
|
||||||
r = write_item(norcow_next_sector, offsetw, k, v, l, &posw);
|
r = write_item(norcow_next_sector, offsetw, k, v, l, &posw);
|
||||||
if (sectrue != r) { } // TODO: error
|
if (sectrue != r) {
|
||||||
|
// TODO: error
|
||||||
|
}
|
||||||
offsetw = posw;
|
offsetw = posw;
|
||||||
}
|
}
|
||||||
|
|
||||||
norcow_erase(norcow_active_sector, secfalse);
|
norcow_erase(norcow_active_sector, secfalse);
|
||||||
norcow_active_sector = norcow_next_sector;
|
norcow_active_sector = norcow_next_sector;
|
||||||
norcow_active_offset = find_free_offset(norcow_active_sector);
|
norcow_active_offset = offsetw;
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
@ -231,16 +233,13 @@ secbool norcow_init(void)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
// no active sectors found - let's erase
|
// no active sectors found - let's erase
|
||||||
if (sectrue != found) {
|
if (sectrue == found) {
|
||||||
norcow_active_sector = 0;
|
norcow_active_offset = find_free_offset(norcow_active_sector);
|
||||||
|
} else {
|
||||||
if (sectrue != norcow_wipe()) {
|
if (sectrue != norcow_wipe()) {
|
||||||
return secfalse;
|
return secfalse;
|
||||||
}
|
}
|
||||||
if (sectrue != norcow_write(norcow_active_sector, 0, NORCOW_MAGIC, NULL, 0)) {
|
|
||||||
return secfalse;
|
|
||||||
}
|
}
|
||||||
}
|
|
||||||
norcow_active_offset = find_free_offset(norcow_active_sector);
|
|
||||||
return sectrue;
|
return sectrue;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user