Thread (5 messages) 5 messages, 4 authors, 2023-04-20

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?
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help