On Mon 02-10-23 18:14:26, Gustavo A. R. Silva wrote: > `struct fileIdentDesc` is a flexible structure, which means that it > contains a flexible-array member at the bottom. This could potentially > lead to an overwrite of the objects following `fi` in `struct > udf_fileident_iter` at run-time. > > Fix this by placing the declaration of object `fi` at the end of > `struct udf_fileident_iter`. > > -Wflex-array-member-not-at-end is coming in GCC-14, and we are getting > ready to enable it globally. > > Fixes: d16076d9b684 ("udf: New directory iteration code") > Cc: sta...@vger.kernel.org > Signed-off-by: Gustavo A. R. Silva <gustavo...@kernel.org>
Thanks for the patch! This is in fact harmless since we never use the impUse field. But I agree it is confusing so I'll merge attached fix instead. Honza -- Jan Kara <j...@suse.com> SUSE Labs, CR
>From 7b530e7ad261dc6111874f2225c2f38f63d12ebf Mon Sep 17 00:00:00 2001 From: Jan Kara <j...@suse.cz> Date: Tue, 3 Oct 2023 11:19:02 +0200 Subject: [PATCH] udf: Avoid unneeded variable length array in struct fileIdentDesc impUse variable length array in struct fileIdentDesc is never used. It serves only for documentation purposes of the on-disk format. Remove it from the struct so that it doesn't confuse the compiler and reviewers. Reported-by: "Gustavo A. R. Silva" <gustavo...@kernel.org> Signed-off-by: Jan Kara <j...@suse.cz> --- fs/udf/ecma_167.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/fs/udf/ecma_167.h b/fs/udf/ecma_167.h index de17a97e8667..415b050b977d 100644 --- a/fs/udf/ecma_167.h +++ b/fs/udf/ecma_167.h @@ -471,7 +471,7 @@ struct fileIdentDesc { uint8_t lengthFileIdent; struct long_ad icb; __le16 lengthOfImpUse; - uint8_t impUse[]; + /* uint8_t impUse[]; */ /* uint8_t fileIdent[]; */ /* uint8_t padding[]; */ } __packed; -- 2.35.3