File 0005-verify-initrd-in-shim-lock.patch of Package grub2

From 29e07d8295b25e964fb1220e7a07b5f764352c1d Mon Sep 17 00:00:00 2001
From: Michael Chang <mchang@suse.com>
Date: Thu, 2 Feb 2023 21:11:15 +0800
Subject: [PATCH 6/7] verify initrd in shim-lock

---
 grub-core/kern/efi/sb.c | 10 +++++++++-
 grub-core/kern/unwrap.c |  3 +++
 2 files changed, 12 insertions(+), 1 deletion(-)

diff --git a/grub-core/kern/efi/sb.c b/grub-core/kern/efi/sb.c
index 68ad47cc9..6029ae011 100644
--- a/grub-core/kern/efi/sb.c
+++ b/grub-core/kern/efi/sb.c
@@ -141,6 +141,10 @@ static struct pe_requirements kernel_pe_requirements = {
   .subsystem = GRUB_PE32_SUBSYSTEM_EFI_APPLICATION,
 };
 
+static struct pe_requirements wrapper_pe_requirements = {
+  .subsystem = GRUB_PE32_SUBSYSTEM_WINDOWS_GUI,
+};
+
 static grub_err_t
 shim_lock_verifier_init (grub_file_t io __attribute__ ((unused)),
 			 enum grub_file_type type,
@@ -163,10 +167,14 @@ shim_lock_verifier_init (grub_file_t io __attribute__ ((unused)),
       *flags = GRUB_VERIFY_FLAGS_SINGLE_CHUNK;
       return GRUB_ERR_NONE;
 
+    case GRUB_FILE_TYPE_LINUX_INITRD:
+      *context = &wrapper_pe_requirements;
+      *flags = GRUB_VERIFY_FLAGS_SINGLE_CHUNK;
+      return GRUB_ERR_NONE;
+
     /* Files that do not affect secureboot state. */
     case GRUB_FILE_TYPE_NONE:
     case GRUB_FILE_TYPE_LOOPBACK:
-    case GRUB_FILE_TYPE_LINUX_INITRD:
     case GRUB_FILE_TYPE_OPENBSD_RAMDISK:
     case GRUB_FILE_TYPE_XNU_RAMDISK:
     case GRUB_FILE_TYPE_SIGNATURE:
diff --git a/grub-core/kern/unwrap.c b/grub-core/kern/unwrap.c
index dc32ccdad..43110cad3 100644
--- a/grub-core/kern/unwrap.c
+++ b/grub-core/kern/unwrap.c
@@ -131,6 +131,9 @@ grub_unwrap_open (grub_file_t io, enum grub_file_type type)
     case GRUB_FILE_TYPE_FONT:
       grub_strncpy(name, ".GRUBpf2", 8);
       break;
+    case GRUB_FILE_TYPE_LINUX_INITRD:
+      grub_strncpy(name, ".GRUBini", 8);
+      break;
 
     /* Don't touch other files. */
     default:
-- 
2.39.2

openSUSE Build Service is sponsored by