lkml.org 
[lkml]   [2020]   [May]   [7]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
/
Date
From
SubjectRe: [PATCH RESEND] tpm: eventlog: Replace zero-length array with flexible-array member
On Wed, May 06, 2020 at 11:09:12PM -0500, Gustavo A. R. Silva wrote:
> As mentioned above: "Flexible array members have incomplete type, and
> so the sizeof operator may not be applied. As a quirk of the original
> implementation of zero-length arrays, sizeof evaluates to zero."[1] So,
> the sizeof(flexible-array) can be safely removed to fix the error above.

As in "sizeof(event_header->event) always evaluated to 0, so removing it
has no effect".

> [...]
> diff --git a/drivers/char/tpm/eventlog/tpm2.c b/drivers/char/tpm/eventlog/tpm2.c
> index e741b1157525..351a2989b3c6 100644
> --- a/drivers/char/tpm/eventlog/tpm2.c
> +++ b/drivers/char/tpm/eventlog/tpm2.c
> @@ -51,8 +51,7 @@ static void *tpm2_bios_measurements_start(struct seq_file *m, loff_t *pos)
> int i;
>
> event_header = addr;
> - size = sizeof(struct tcg_pcr_event) - sizeof(event_header->event)
> - + event_header->event_size;
> + size = sizeof(*event_header) + event_header->event_size;

That said, I think it would be better to stick to the struct_size()
idiom for dealing with flexible arrays here:

size = struct_size(event_header, event, event_size);

--
Kees Cook

\
 
 \ /
  Last update: 2020-05-07 20:03    [W:0.078 / U:0.136 seconds]
©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site