grub2/safe_tpm_pcr_snapshot.patch
Michael Chang 7e75e7f881 Accepting request 1138021 from home:michael-chang:grub:2.12
- Version bump to 2.12 (PED-5589)
  * Added:
    - grub-2.12.tar.xz
    - fix_no_extra_deps_in_release_tarball.patch
  * Removed:
    - grub-2.12~rc1.tar.xz
  * Patch dropped as it merged into new version:
    - 0001-disk-cryptodisk-Fix-missing-change-when-updating-to-.patch
    - 0001-fs-btrfs-Zero-file-data-not-backed-by-extents.patch
    - 0001-fs-ntfs-Fix-an-OOB-write-when-parsing-the-ATTRIBUTE_.patch
    - 0002-fs-ntfs-Fix-an-OOB-read-when-reading-data-from-the-r.patch
    - 0003-fs-ntfs-Fix-an-OOB-read-when-parsing-directory-entri.patch
    - 0004-fs-ntfs-Fix-an-OOB-read-when-parsing-bitmaps-for-ind.patch
    - 0005-fs-ntfs-Fix-an-OOB-read-when-parsing-a-volume-label.patch
    - 0006-fs-ntfs-Make-code-more-readable.patch
    - 0001-kern-ieee1275-init-Restrict-high-memory-in-presence-.patch
    - 0001-fs-xfs-Incorrect-short-form-directory-data-boundary-.patch
    - 0002-fs-xfs-Fix-XFS-directory-extent-parsing.patch
    - 0003-fs-xfs-add-large-extent-counters-incompat-feature-su.patch
    - 0001-mkstandalone-ensure-stable-timestamps-for-generated-.patch
    - 0002-mkstandalone-ensure-deterministic-tar-file-creation-.patch
  * Patch adjusted for the updated base version:
    - use-grub2-as-a-package-name.patch
    - grub2-s390x-04-grub2-install.patch
    - grub2-btrfs-04-grub2-install.patch
    - grub2-ppc64le-disable-video.patch
    - 0002-AUDIT-0-http-boot-tracker-bug.patch
    - 0001-Unify-the-check-to-enable-btrfs-relative-path.patch
    - 0003-Handle-multi-arch-64-on-32-boot-in-linuxefi-loader.patch
    - 0004-Add-suport-for-signing-grub-with-an-appended-signatu.patch

OBS-URL: https://build.opensuse.org/request/show/1138021
OBS-URL: https://build.opensuse.org/package/show/Base:System/grub2?expand=0&rev=480
2024-01-11 07:48:22 +00:00

100 lines
2.4 KiB
Diff

---
grub-core/commands/tpm.c | 46 ++++++++++++++++++++++++++++++++++++----------
util/grub-install.c | 6 ++++--
2 files changed, 40 insertions(+), 12 deletions(-)
--- a/grub-core/commands/tpm.c
+++ b/grub-core/commands/tpm.c
@@ -27,8 +27,10 @@
#include <grub/verify.h>
#include <grub/dl.h>
#include <grub/extcmd.h>
+#ifdef GRUB_MACHINE_EFI
#include <grub/tpm2/tpm2.h>
#include <grub/efi/efi.h>
+#endif
GRUB_MOD_LICENSE ("GPLv3+");
@@ -97,12 +99,6 @@
.verify_string = grub_tpm_verify_string,
};
-/*
- * Preserve current PCR values and record them to an EFI variable
- */
-#define GRUB2_PCR_BITMASK_DEFAULT ((1 << 16) - 1)
-#define GRUB2_PCR_BITMASK_ALL ((1 << 24) - 1)
-
static const struct grub_arg_option grub_tpm_record_pcrs_options[] =
{
{
@@ -118,6 +114,14 @@
{0, 0, 0, 0, 0, 0}
};
+#ifdef GRUB_MACHINE_EFI
+
+/*
+ * Preserve current PCR values and record them to an EFI variable
+ */
+#define GRUB2_PCR_BITMASK_DEFAULT ((1 << 16) - 1)
+#define GRUB2_PCR_BITMASK_ALL ((1 << 24) - 1)
+
static grub_err_t
grub_tpm_parse_pcr_index (const char *word, const char **end_ret, unsigned int *index)
{
@@ -269,6 +273,10 @@
grub_size_t size = 0;
int n, rv = 1;
+ /* To prevent error: unable to read PCR from TPM, if no TPM device available */
+ if (!grub_tpm_present())
+ return GRUB_ERR_NONE;
+
if (argc == 0)
pcr_bitmask = GRUB2_PCR_BITMASK_DEFAULT;
else
@@ -297,6 +305,18 @@
return rv;
}
+#else
+
+static grub_err_t
+grub_tpm_record_pcrs (grub_extcmd_context_t ctxt __attribute__((unused)),
+ int argc __attribute__((unused)),
+ char **args __attribute__((unused)))
+{
+ return GRUB_ERR_NONE;
+}
+
+#endif
+
static grub_extcmd_t cmd;
GRUB_MOD_INIT (tpm)
--- a/util/grub-install.c
+++ b/util/grub-install.c
@@ -1560,8 +1560,9 @@
grub_util_unlink (load_cfg);
- if (1)
+ if (platform == GRUB_INSTALL_PLATFORM_X86_64_EFI && have_cryptodisk)
{
+ grub_install_push_module ("tpm");
load_cfg_f = grub_util_fopen (load_cfg, "wb");
have_load_cfg = 1;
fprintf (load_cfg_f, "tpm_record_pcrs 0-9\n");
@@ -1569,7 +1570,8 @@
if (debug_image && debug_image[0])
{
- load_cfg_f = grub_util_fopen (load_cfg, "wb");
+ if (!load_cfg_f)
+ load_cfg_f = grub_util_fopen (load_cfg, "wb");
have_load_cfg = 1;
fprintf (load_cfg_f, "set debug='%s'\n",
debug_image);