Skip to content

Commit 395202b

Browse files
committed
Add equal-version update-disk regression test
F/2264
1 parent a09babb commit 395202b

2 files changed

Lines changed: 30 additions & 0 deletions

File tree

tools/unit-tests/Makefile

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -106,6 +106,8 @@ unit-update-flash-self-update:CFLAGS+=-DMOCK_PARTITIONS -DWOLFBOOT_NO_SIGN -DUNI
106106
unit-update-ram:CFLAGS+=-DMOCK_PARTITIONS -DWOLFBOOT_NO_SIGN -DUNIT_TEST_AUTH \
107107
-DWOLFBOOT_HASH_SHA256 -DPRINTF_ENABLED -DEXT_FLASH -DPART_UPDATE_EXT \
108108
-DPART_SWAP_EXT -DPART_BOOT_EXT -DWOLFBOOT_DUALBOOT -DNO_XIP
109+
unit-update-disk:CFLAGS+=-DMOCK_PARTITIONS -DPRINTF_ENABLED \
110+
-DWOLFBOOT_ORIGIN=MOCK_ADDRESS_BOOT -DBOOTLOADER_PARTITION_SIZE=WOLFBOOT_PARTITION_SIZE
109111
unit-string:CFLAGS+=-fno-builtin
110112

111113

tools/unit-tests/unit-update-disk.c

Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,12 +8,14 @@
88
#define IMAGE_HEADER_SIZE 256
99
#define BOOT_PART_A 0
1010
#define BOOT_PART_B 1
11+
#define MOCK_ADDRESS_BOOT 0xCD000000
1112

1213
#include <stdio.h>
1314
#include <stdint.h>
1415
#include <string.h>
1516
#include <check.h>
1617

18+
#include "hal.h"
1719
#include "target.h"
1820
#include "wolfboot/wolfboot.h"
1921
#include "image.h"
@@ -190,6 +192,13 @@ void do_boot(const uint32_t *address)
190192
mock_boot_address = address;
191193
}
192194

195+
int hal_flash_protect(haladdr_t address, int len)
196+
{
197+
(void)address;
198+
(void)len;
199+
return 0;
200+
}
201+
193202
#include "update_disk.c"
194203

195204
START_TEST(test_update_disk_zeroizes_key_material_on_panic)
@@ -232,6 +241,24 @@ START_TEST(test_update_disk_zeroizes_key_material_before_boot)
232241
}
233242
END_TEST
234243

244+
START_TEST(test_update_disk_prefers_primary_partition_when_versions_equal)
245+
{
246+
reset_mocks();
247+
build_image(part_a_image, 7, 0xA1);
248+
build_image(part_b_image, 7, 0xB2);
249+
250+
wolfBoot_start();
251+
252+
ck_assert_int_eq(wolfBoot_panicked, 0);
253+
ck_assert_int_eq(mock_do_boot_called, 1);
254+
ck_assert_ptr_eq(mock_boot_address, (const uint32_t *)WOLFBOOT_LOAD_ADDRESS);
255+
ck_assert_int_eq(memcmp(load_buffer, part_a_image + IMAGE_HEADER_SIZE,
256+
TEST_PAYLOAD_SIZE), 0);
257+
ck_assert_int_ne(memcmp(load_buffer, part_b_image + IMAGE_HEADER_SIZE,
258+
TEST_PAYLOAD_SIZE), 0);
259+
}
260+
END_TEST
261+
235262
START_TEST(test_get_decrypted_blob_version_rejects_truncated_version_tlv)
236263
{
237264
uint8_t hdr[IMAGE_HEADER_SIZE + 2];
@@ -268,6 +295,7 @@ Suite *wolfboot_suite(void)
268295

269296
tcase_add_test(tc, test_update_disk_zeroizes_key_material_on_panic);
270297
tcase_add_test(tc, test_update_disk_zeroizes_key_material_before_boot);
298+
tcase_add_test(tc, test_update_disk_prefers_primary_partition_when_versions_equal);
271299
tcase_add_test(tc, test_get_decrypted_blob_version_rejects_truncated_version_tlv);
272300
suite_add_tcase(s, tc);
273301

0 commit comments

Comments
 (0)