@@ -330,6 +330,38 @@ START_TEST(test_partition_magic_write_stops_on_flash_write_error)
330330}
331331END_TEST
332332
333+ START_TEST (test_get_update_sector_flag_rejects_invalid_magic )
334+ {
335+ int ret ;
336+ uint8_t st = 0xA5 ;
337+ uint32_t * magic ;
338+
339+ ret = mmap_file ("/tmp/wolfboot-unit-invalid-magic.bin" , (void * )MOCK_ADDRESS ,
340+ WOLFBOOT_PARTITION_SIZE , NULL );
341+ ck_assert (ret >= 0 );
342+ #ifdef FLAGS_HOME
343+ ret = mmap_file ("/tmp/wolfboot-unit-invalid-magic-int.bin" ,
344+ (void * )MOCK_ADDRESS_BOOT , WOLFBOOT_PARTITION_SIZE , NULL );
345+ ck_assert (ret >= 0 );
346+ #endif
347+ ret = mmap_file ("/tmp/wolfboot-unit-invalid-magic-swap.bin" ,
348+ (void * )MOCK_ADDRESS_SWAP , WOLFBOOT_SECTOR_SIZE , NULL );
349+ ck_assert (ret >= 0 );
350+
351+ hal_flash_unlock ();
352+ wolfBoot_erase_partition (PART_UPDATE );
353+
354+ magic = get_partition_magic (PART_UPDATE );
355+ * magic = 0xFFFFFFFF ;
356+
357+ ret = wolfBoot_get_update_sector_flag (0 , & st );
358+ ck_assert_int_eq (ret , -1 );
359+ ck_assert_uint_eq (st , 0xA5 );
360+
361+ hal_flash_lock ();
362+ }
363+ END_TEST
364+
333365
334366Suite * wolfboot_suite (void )
335367{
@@ -341,6 +373,8 @@ Suite *wolfboot_suite(void)
341373 tcase_add_test (nvm_select_fresh_sector , test_nvm_select_fresh_sector );
342374 tcase_add_test (nvm_select_fresh_sector ,
343375 test_partition_magic_write_stops_on_flash_write_error );
376+ tcase_add_test (nvm_select_fresh_sector ,
377+ test_get_update_sector_flag_rejects_invalid_magic );
344378 suite_add_tcase (s , nvm_select_fresh_sector );
345379
346380 return s ;
0 commit comments