bootutil: loader: Verify image header before checking image
Changes the order of operations to validate the image header
before checking the image, it does not make sense to check the
image if the header itself is invalid
Signed-off-by: Jamie McCrae <jamie.mccrae@nordicsemi.no>
diff --git a/boot/bootutil/src/loader.c b/boot/bootutil/src/loader.c
index 491c83c..3b4bd8c 100644
--- a/boot/bootutil/src/loader.c
+++ b/boot/bootutil/src/loader.c
@@ -1030,13 +1030,16 @@
}
}
#endif
- BOOT_HOOK_CALL_FIH(boot_image_check_hook, FIH_BOOT_HOOK_REGULAR,
- fih_rc, BOOT_CURR_IMG(state), slot);
- if (FIH_EQ(fih_rc, FIH_BOOT_HOOK_REGULAR))
- {
- FIH_CALL(boot_image_check, fih_rc, state, hdr, fap, bs);
+ if (!boot_is_header_valid(hdr, fap, state)) {
+ fih_rc = FIH_FAILURE;
+ } else {
+ BOOT_HOOK_CALL_FIH(boot_image_check_hook, FIH_BOOT_HOOK_REGULAR,
+ fih_rc, BOOT_CURR_IMG(state), slot);
+ if (FIH_EQ(fih_rc, FIH_BOOT_HOOK_REGULAR)) {
+ FIH_CALL(boot_image_check, fih_rc, state, hdr, fap, bs);
+ }
}
- if (!boot_is_header_valid(hdr, fap, state) || FIH_NOT_EQ(fih_rc, FIH_SUCCESS)) {
+ if (FIH_NOT_EQ(fih_rc, FIH_SUCCESS)) {
if ((slot != BOOT_PRIMARY_SLOT) || ARE_SLOTS_EQUIVALENT()) {
flash_area_erase(fap, 0, flash_area_get_size(fap));
/* Image is invalid, erase it to prevent further unnecessary