diff options
Diffstat (limited to 'test/nvmem.c')
-rw-r--r-- | test/nvmem.c | 14 |
1 files changed, 14 insertions, 0 deletions
diff --git a/test/nvmem.c b/test/nvmem.c index a7e339ebf1..52cf40138a 100644 --- a/test/nvmem.c +++ b/test/nvmem.c @@ -828,6 +828,7 @@ static int test_nvmem_incomplete_transaction(void) uint16_t offsets[MAX_OFFSETS]; size_t num_objects; uint8_t buf[nvmem_user_sizes[NVMEM_TPM]]; + uint8_t *p; TEST_ASSERT(prepare_post_migration_nvmem() == EC_SUCCESS); num_objects = fill_obj_offsets(offsets, ARRAY_SIZE(offsets)); @@ -859,6 +860,19 @@ static int test_nvmem_incomplete_transaction(void) num_objects = fill_obj_offsets(offsets, ARRAY_SIZE(offsets)); TEST_ASSERT(num_objects == 7); + /* + * Now, let's modify an object and introduce corruption when saving + * it. + */ + p = evictable_offs_to_addr(offsets[4]); + p[10] ^= 0x55; + failure_mode = TEST_FAILED_HASH; + new_nvmem_save(); + failure_mode = TEST_NO_FAILURE; + + /* And verify that nvmem can still successfully initialize. */ + TEST_ASSERT(nvmem_init() == EC_SUCCESS); + return EC_SUCCESS; } |