The grub-mkimage does not check if the SBAT metadata file is empty or not when
creating core image 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 before adding it to the ELF note or .sbat section.

Signed-off-by: Sudhakar Kuppusamy <[email protected]>
---
 util/mkimage.c | 9 +++++++--
 1 file changed, 7 insertions(+), 2 deletions(-)

diff --git a/util/mkimage.c b/util/mkimage.c
index f364a5718..7ca580e98 100644
--- a/util/mkimage.c
+++ b/util/mkimage.c
@@ -963,6 +963,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)
+        grub_util_error (_("%s file does not contains SBAT metadata"), 
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 +1402,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 +1863,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

Reply via email to