On Tue, Nov 06, 2018 at 04:01:55PM +0100, Roberto Sassu wrote: > tcg_efi_specid_event and tcg_pcr_event2 declaration contains static arrays > for a list of hash algorithms used for event logs and event log digests. > However, according to TCG EFI Protocol Specification, these arrays have > variable sizes and are not suitable for parsing events with type casting. > > Since declaring static arrays with hard-coded sizes does not help to parse > data after these arrays, this patch removes the declaration of > TPM2_ACTIVE_PCR_BANKS and sets the size of the arrays above to zero. > > Fixes: 4d23cc323cdb ("tpm: add securityfs support for TPM 2.0 firmware > event log") > > Signed-off-by: Roberto Sassu <roberto.sassu@xxxxxxxxxx> > diff --git a/include/linux/tpm_eventlog.h b/include/linux/tpm_eventlog.h > index 20d9da77fc11..3d5d162f09cc 100644 > --- a/include/linux/tpm_eventlog.h > +++ b/include/linux/tpm_eventlog.h > @@ -8,7 +8,6 @@ > #define TCG_EVENT_NAME_LEN_MAX 255 > #define MAX_TEXT_EVENT 1000 /* Max event string length */ > #define ACPI_TCPA_SIG "TCPA" /* 0x41504354 /'TCPA' */ > -#define TPM2_ACTIVE_PCR_BANKS 3 > > #define EFI_TCG2_EVENT_LOG_FORMAT_TCG_1_2 0x1 > #define EFI_TCG2_EVENT_LOG_FORMAT_TCG_2 0x2 > @@ -90,7 +89,7 @@ struct tcg_efi_specid_event { > u8 spec_errata; > u8 uintnsize; > u32 num_algs; > - struct tcg_efi_specid_event_algs digest_sizes[TPM2_ACTIVE_PCR_BANKS]; > + struct tcg_efi_specid_event_algs digest_sizes[0]; > u8 vendor_info_size; > u8 vendor_info[0]; > } __packed; > @@ -117,7 +116,7 @@ struct tcg_pcr_event2 { > u32 pcr_idx; > u32 event_type; > u32 count; > - struct tpm2_digest digests[TPM2_ACTIVE_PCR_BANKS]; > + struct tpm2_digest digests[0]; > struct tcg_event_field event; > } __packed; > > -- > 2.17.1 > I somehow lost your response but what you must do is to explain why is it OK for last two fields to overlap. /Jarkko