Skip to content

Commit

Permalink
bootutil: Fix boot_set_next passing wrong image number
Browse files Browse the repository at this point in the history
The commit fixes boot_set_next always passing image 0 to
boot_write_swap_info, instead of the proper image number.
This has been affecting applications that tried to call boot_set_next
in multi-image MCUboot configuration using scratch-swap algorithm.

Fixes #1762

Signed-off-by: Dominik Ermel <dominik.ermel@nordicsemi.no>
  • Loading branch information
de-nordic authored and nvlsianpu committed Aug 4, 2023
1 parent fefc398 commit f17b005
Showing 1 changed file with 16 additions and 1 deletion.
17 changes: 16 additions & 1 deletion boot/bootutil/src/bootutil_public.c
Original file line number Diff line number Diff line change
Expand Up @@ -458,6 +458,20 @@ boot_swap_type_multi(int image_index)
return BOOT_SWAP_TYPE_NONE;
}

static int flash_area_id_to_image(int id)
{
#if BOOT_IMAGE_NUMBER > 2
#error "BOOT_IMAGE_NUMBER > 2 requires change to flash_area_id_to_image"
#elif BOOT_IMAGE_NUMBER > 1
if (FLASH_AREA_IMAGE_SECONDARY(0) == id || (FLASH_AREA_IMAGE_SECONDARY(1) == id)) {
return 1;
}
#else
(void)id;
#endif
return 0;
}

int
boot_set_next(const struct flash_area *fa, bool active, bool confirm)
{
Expand Down Expand Up @@ -503,7 +517,8 @@ boot_set_next(const struct flash_area *fa, bool active, bool confirm)
} else {
swap_type = BOOT_SWAP_TYPE_TEST;
}
rc = boot_write_swap_info(fa, swap_type, 0);
rc = boot_write_swap_info(fa, swap_type,
flash_area_id_to_image(flash_area_get_id(fa)));
}
}
break;
Expand Down

0 comments on commit f17b005

Please sign in to comment.