OSDN Git Service

netfilter: ebtables: replace zero-length array members
authorGONG, Ruiqi <gongruiqi1@huawei.com>
Wed, 9 Aug 2023 07:51:36 +0000 (15:51 +0800)
committerFlorian Westphal <fw@strlen.de>
Tue, 22 Aug 2023 13:13:20 +0000 (15:13 +0200)
As suggested by Kees[1], replace the old-style 0-element array members
of multiple structs in ebtables.h with modern C99 flexible array.

[1]: https://lore.kernel.org/all/5E8E0F9C-EE3F-4B0D-B827-DC47397E2A4A@kernel.org/

[ fw@strlen.de:
  keep struct ebt_entry_target as-is, causes compiler warning:
  "variable sized type 'struct ebt_entry_target' not at the end of a
  struct or class is a GNU extension" ]

Link: https://github.com/KSPP/linux/issues/21
Signed-off-by: GONG, Ruiqi <gongruiqi1@huawei.com>
Reviewed-by: Kees Cook <keescook@chromium.org>
Signed-off-by: Florian Westphal <fw@strlen.de>
include/uapi/linux/netfilter_bridge/ebtables.h

index b0caad8..4ff328f 100644 (file)
@@ -87,7 +87,7 @@ struct ebt_entries {
        /* nr. of entries */
        unsigned int nentries;
        /* entry list */
-       char data[0] __attribute__ ((aligned (__alignof__(struct ebt_replace))));
+       char data[] __attribute__ ((aligned (__alignof__(struct ebt_replace))));
 };
 
 /* used for the bitmask of struct ebt_entry */
@@ -129,7 +129,7 @@ struct ebt_entry_match {
        } u;
        /* size of data */
        unsigned int match_size;
-       unsigned char data[0] __attribute__ ((aligned (__alignof__(struct ebt_replace))));
+       unsigned char data[] __attribute__ ((aligned (__alignof__(struct ebt_replace))));
 };
 
 struct ebt_entry_watcher {
@@ -142,7 +142,7 @@ struct ebt_entry_watcher {
        } u;
        /* size of data */
        unsigned int watcher_size;
-       unsigned char data[0] __attribute__ ((aligned (__alignof__(struct ebt_replace))));
+       unsigned char data[] __attribute__ ((aligned (__alignof__(struct ebt_replace))));
 };
 
 struct ebt_entry_target {
@@ -190,7 +190,7 @@ struct ebt_entry {
                /* sizeof ebt_entry + matches + watchers + target */
                unsigned int next_offset;
        );
-       unsigned char elems[0] __attribute__ ((aligned (__alignof__(struct ebt_replace))));
+       unsigned char elems[] __attribute__ ((aligned (__alignof__(struct ebt_replace))));
 };
 
 static __inline__ struct ebt_entry_target *