Re: [PATCH] powerpc/rtas: Replace one-element arrays with flexible arrays
From: Nathan Lynch <hidden>
Date: 2023-01-27 13:11:35
Also in:
linux-hardening
Andrew Donnellan [off-list ref] writes:
quoted hunk ↗ jump to hunk
Using a one-element array as a fake flexible array is deprecated. Replace the one-element flexible arrays in rtas-types.h with C99 standard flexible array members instead. This helps us move towards enabling -fstrict-flex-arrays=3 in future. Found using scripts/coccinelle/misc/flexible_array.cocci. Cc: Nathan Lynch <redacted> Cc: Leonardo Bras <redacted> Cc: linux-hardening@vger.kernel.org Link: https://github.com/KSPP/linux/issues/21 Link: https://github.com/KSPP/linux/issues/79 Signed-off-by: Andrew Donnellan <redacted> --- arch/powerpc/include/asm/rtas-types.h | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-)diff --git a/arch/powerpc/include/asm/rtas-types.h b/arch/powerpc/include/asm/rtas-types.h index 8df6235d64d1..40ec03a05c0b 100644 --- a/arch/powerpc/include/asm/rtas-types.h +++ b/arch/powerpc/include/asm/rtas-types.h@@ -44,7 +44,7 @@ struct rtas_error_log { */ u8 byte3; /* General event or error*/ __be32 extended_log_length; /* length in bytes */ - unsigned char buffer[1]; /* Start of extended log */ + unsigned char buffer[]; /* Start of extended log */ /* Variable length. */ };@@ -85,7 +85,7 @@ struct rtas_ext_event_log_v6 { /* that defines the format for */ /* the vendor specific log type */ /* Byte 16-end of log */ - u8 vendor_log[1]; /* Start of vendor specific log */ + u8 vendor_log[]; /* Start of vendor specific log */ /* Variable length. */ };
I see at least one place that consults the size of one of these structs, in get_pseries_errorlog(): /* Check that we understand the format */ if (ext_log_length < sizeof(struct rtas_ext_event_log_v6) || ... Don't all such sites need to be audited/adjusted for changes like this?