diff options
| -rw-r--r-- | include/linux/tpm_eventlog.h | 11 | 
1 files changed, 9 insertions, 2 deletions
| diff --git a/include/linux/tpm_eventlog.h b/include/linux/tpm_eventlog.h index 64356b199e94..739ba9a03ec1 100644 --- a/include/linux/tpm_eventlog.h +++ b/include/linux/tpm_eventlog.h @@ -211,9 +211,16 @@ static inline int __calc_tpm2_event_size(struct tcg_pcr_event2_head *event,  	efispecid = (struct tcg_efi_specid_event_head *)event_header->event; -	/* Check if event is malformed. */ +	/* +	 * Perform validation of the event in order to identify malformed +	 * events. This function may be asked to parse arbitrary byte sequences +	 * immediately following a valid event log. The caller expects this +	 * function to recognize that the byte sequence is not a valid event +	 * and to return an event size of 0. +	 */  	if (memcmp(efispecid->signature, TCG_SPECID_SIG, -		   sizeof(TCG_SPECID_SIG)) || count > efispecid->num_algs) { +		   sizeof(TCG_SPECID_SIG)) || +	    !efispecid->num_algs || count != efispecid->num_algs) {  		size = 0;  		goto out;  	} | 
