Skip to content

Commit

Permalink
[nrf fromtree] boot: Fix swap-move algorithm failing to validate mult…
Browse files Browse the repository at this point in the history
…i-image

In multi image swap validation of images could fail due to
headers being incorrectly re-read from storage.

Fixes #1768

Signed-off-by: Dominik Ermel <[email protected]>
(cherry picked from commit 6f7f873)
  • Loading branch information
de-nordic committed Feb 26, 2024
1 parent 42a1eb6 commit cb64eca
Showing 1 changed file with 7 additions and 1 deletion.
8 changes: 7 additions & 1 deletion boot/bootutil/src/loader.c
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@
* Copyright (c) 2016-2020 Linaro LTD
* Copyright (c) 2016-2019 JUUL Labs
* Copyright (c) 2019-2023 Arm Limited
* Copyright (c) 2024 Nordic Semiconductor ASA
*
* Original license:
*
Expand Down Expand Up @@ -2372,8 +2373,13 @@ context_boot_go(struct boot_loader_state *state, struct boot_rsp *rsp)
if (BOOT_SWAP_TYPE(state) != BOOT_SWAP_TYPE_NONE) {
/* Attempt to read an image header from each slot. Ensure that image
* headers in slots are aligned with headers in boot_data.
* Note: Quite complicated internal logic of boot_read_image_headers
* uses boot state, the last parm, to figure out in which slot which
* header is located; when boot state is not provided, then it
* is assumed that headers are at proper slots (we are not in
* the middle of moving images, etc).
*/
rc = boot_read_image_headers(state, false, &bs);
rc = boot_read_image_headers(state, false, NULL);
if (rc != 0) {
FIH_SET(fih_rc, FIH_FAILURE);
goto out;
Expand Down

0 comments on commit cb64eca

Please sign in to comment.