linux/fs/udf
Gustavo A. R. Silva 3fc131663c udf: udf_sb.h: Replace zero-length array with flexible-array member
The current codebase makes use of the zero-length array language
extension to the C90 standard, but the preferred mechanism to declare
variable-length types such as these ones is a flexible array member[1][2],
introduced in C99:

struct foo {
        int stuff;
        struct boo array[];
};

By making use of the mechanism above, we will get a compiler warning
in case the flexible array does not occur last in the structure, which
will help us prevent some kind of undefined behavior bugs from being
inadvertently introduced[3] to the codebase from now on.

Also, notice that, dynamic memory allocations won't be affected by
this change:

"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]

This issue was found with the help of Coccinelle.

[1] https://gcc.gnu.org/onlinedocs/gcc/Zero-Length.html
[2] https://github.com/KSPP/linux/issues/21
[3] commit 7649773293 ("cxgb3/l2t: Fix undefined behaviour")

Link: https://lore.kernel.org/r/20200309202715.GA9428@embeddedor
Signed-off-by: Gustavo A. R. Silva <gustavo@embeddedor.com>
Signed-off-by: Jan Kara <jack@suse.cz>
2020-03-16 15:57:09 +01:00
..
Kconfig treewide: Add SPDX license identifier - Makefile/Kconfig 2019-05-21 10:50:46 +02:00
Makefile treewide: Add SPDX license identifier - Makefile/Kconfig 2019-05-21 10:50:46 +02:00
balloc.c udf: prevent allocation beyond UDF partition 2019-07-31 18:41:37 +02:00
dir.c udf: Fix 64-bit sign extension issues affecting blocks > 0x7FFFFFFF 2017-10-17 11:56:45 +02:00
directory.c udf: Provide function for calculating dir entry length 2018-06-20 11:05:49 +02:00
ecma_167.h udf: Fix meaning of ENTITYID_FLAGS_* macros to be really bitwise-or flags 2020-01-13 12:38:46 +01:00
file.c udf: augment UDF permissions on new inodes 2019-08-27 15:38:46 +02:00
ialloc.c udf: augment UDF permissions on new inodes 2019-08-27 15:38:46 +02:00
inode.c udf: Fix spelling in EXT_NEXT_EXTENT_ALLOCDESCS 2020-01-08 11:11:46 +01:00
lowlevel.c udf: atomically read inode size 2017-01-10 11:57:34 +01:00
misc.c udf: Fix signed/unsigned format specifiers 2017-10-17 12:00:58 +02:00
namei.c udf: fix an uninitialized read bug and remove dead code 2019-04-17 13:13:24 +02:00
osta_udf.h udf: Update header files to UDF 2.60 2020-01-08 11:12:20 +01:00
partition.c udf: Fix signed/unsigned format specifiers 2017-10-17 12:00:58 +02:00
super.c udf: Clarify meaning of f_files in udf_statfs 2020-01-20 13:59:41 +01:00
symlink.c statx: Add a system call to make enhanced file info available 2017-03-02 20:51:15 -05:00
truncate.c udf: Fix spelling in EXT_NEXT_EXTENT_ALLOCDESCS 2020-01-08 11:11:46 +01:00
udf_i.h udf: augment UDF permissions on new inodes 2019-08-27 15:38:46 +02:00
udf_sb.h udf: udf_sb.h: Replace zero-length array with flexible-array member 2020-03-16 15:57:09 +01:00
udfdecl.h udf: augment UDF permissions on new inodes 2019-08-27 15:38:46 +02:00
udfend.h License cleanup: add SPDX GPL-2.0 license identifier to files with no license 2017-11-02 11:10:55 +01:00
udftime.c udf: convert inode stamps to timespec64 2018-06-27 13:58:00 +02:00
unicode.c udf: Allow mounting volumes with incorrect identification strings 2018-11-19 10:27:59 +01:00