diff options
author | Joel Stanley <joel@jms.id.au> | 2020-07-22 12:42:41 +0300 |
---|---|---|
committer | Joel Stanley <joel@jms.id.au> | 2020-07-22 12:42:46 +0300 |
commit | 8a9b346382056b52cd7ff141ae9f15a0fcfeb13d (patch) | |
tree | 7b855ed138c412bc27713ea8d3feef8939c954a0 /include/linux/tpm_eventlog.h | |
parent | 2b4829edfc1c225c717652153097470529d171db (diff) | |
parent | d811d29517d1ea05bc159579231652d3ca1c2a01 (diff) | |
download | linux-8a9b346382056b52cd7ff141ae9f15a0fcfeb13d.tar.xz |
Merge tag 'v5.4.53' into dev-5.4
This is the 5.4.53 stable release
Signed-off-by: Joel Stanley <joel@jms.id.au>
Diffstat (limited to 'include/linux/tpm_eventlog.h')
-rw-r--r-- | include/linux/tpm_eventlog.h | 14 |
1 files changed, 13 insertions, 1 deletions
diff --git a/include/linux/tpm_eventlog.h b/include/linux/tpm_eventlog.h index 131ea1bad458..eccfd3a4e4c8 100644 --- a/include/linux/tpm_eventlog.h +++ b/include/linux/tpm_eventlog.h @@ -81,6 +81,8 @@ struct tcg_efi_specid_event_algs { u16 digest_size; } __packed; +#define TCG_SPECID_SIG "Spec ID Event03" + struct tcg_efi_specid_event_head { u8 signature[16]; u32 platform_class; @@ -171,6 +173,7 @@ static inline int __calc_tpm2_event_size(struct tcg_pcr_event2_head *event, int i; int j; u32 count, event_type; + const u8 zero_digest[sizeof(event_header->digest)] = {0}; marker = event; marker_start = marker; @@ -198,10 +201,19 @@ static inline int __calc_tpm2_event_size(struct tcg_pcr_event2_head *event, count = READ_ONCE(event->count); event_type = READ_ONCE(event->event_type); + /* Verify that it's the log header */ + if (event_header->pcr_idx != 0 || + event_header->event_type != NO_ACTION || + memcmp(event_header->digest, zero_digest, sizeof(zero_digest))) { + size = 0; + goto out; + } + efispecid = (struct tcg_efi_specid_event_head *)event_header->event; /* Check if event is malformed. */ - if (count > efispecid->num_algs) { + if (memcmp(efispecid->signature, TCG_SPECID_SIG, + sizeof(TCG_SPECID_SIG)) || count > efispecid->num_algs) { size = 0; goto out; } |