The grub-mkimage does not check if the SBAT metadata file is contains at least the SBAT header or not when creating core.elf with the SBAT metadata file. It leads to adding the empty SBAT ELF note for PowerPC and the .sbat section for EFI. Fixing this by checking the SBAT metadata file size against the SBAT header size before adding it to the ELF note or .sbat section.
Signed-off-by: Sudhakar Kuppusamy <[email protected]> --- util/mkimage.c | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/util/mkimage.c b/util/mkimage.c index f364a5718..b3a815be5 100644 --- a/util/mkimage.c +++ b/util/mkimage.c @@ -56,6 +56,9 @@ #pragma GCC diagnostic ignored "-Wcast-align" +#define SBAT_HEADER "sbat,1,SBAT Version,sbat,1,https://github.com/rhboot/shim/blob/main/SBAT.md" +#define SBAT_HEADER_SIZE (sizeof(SBAT_HEADER)) + #define TARGET_NO_FIELD 0xffffffff /* use 2015-01-01T00:00:00+0000 as a stock timestamp */ @@ -963,6 +966,12 @@ grub_install_generate_image (const char *dir, const char *prefix, if (sbat_path != NULL && (image_target->id != IMAGE_EFI && image_target->id != IMAGE_PPC)) grub_util_error (_("SBAT data can be added only to EFI or powerpc-ieee1275 images")); + else if (sbat_path != NULL) + { + sbat_size = grub_util_get_image_size (sbat_path); + if (sbat_size < SBAT_HEADER_SIZE) + grub_util_error (_("%s file should contain at least an SBAT header"), sbat_path); + } if (appsig_size != 0 && image_target->id != IMAGE_PPC) grub_util_error (_("appended signature can be support only to powerpc-ieee1275 images")); @@ -1396,7 +1405,7 @@ grub_install_generate_image (const char *dir, const char *prefix, if (sbat_path != NULL) { - sbat_size = ALIGN_ADDR (grub_util_get_image_size (sbat_path)); + sbat_size = ALIGN_ADDR (sbat_size); sbat_size = ALIGN_UP (sbat_size, GRUB_PE32_FILE_ALIGNMENT); } @@ -1857,7 +1866,6 @@ grub_install_generate_image (const char *dir, const char *prefix, char *sbat = NULL; if (sbat_path != NULL) { - sbat_size = grub_util_get_image_size (sbat_path); sbat = xmalloc (sbat_size); grub_util_load_image (sbat_path, sbat); layout.sbat_size = sbat_size; -- 2.50.1 (Apple Git-155) _______________________________________________ Grub-devel mailing list [email protected] https://lists.gnu.org/mailman/listinfo/grub-devel
