Skip to content

Commit 2507135

Browse files
GustavoARSilvabrauner
authored andcommitted
readdir: Replace one-element arrays with flexible-array members
One-element arrays are deprecated, and we are replacing them with flexible array members instead. So, replace one-element arrays with flexible-array members in multiple structures. Address the following -Wstringop-overflow warnings seen when built m68k architecture with m5307c3_defconfig configuration: In function '__put_user_fn', inlined from 'fillonedir' at fs/readdir.c:170:2: include/asm-generic/uaccess.h:49:35: warning: writing 1 byte into a region of size 0 [-Wstringop-overflow=] 49 | *(u8 __force *)to = *(u8 *)from; | ~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~ fs/readdir.c: In function 'fillonedir': fs/readdir.c:134:25: note: at offset 1 into destination object 'd_name' of size 1 134 | char d_name[1]; | ^~~~~~ In function '__put_user_fn', inlined from 'filldir' at fs/readdir.c:257:2: include/asm-generic/uaccess.h:49:35: warning: writing 1 byte into a region of size 0 [-Wstringop-overflow=] 49 | *(u8 __force *)to = *(u8 *)from; | ~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~ fs/readdir.c: In function 'filldir': fs/readdir.c:211:25: note: at offset 1 into destination object 'd_name' of size 1 211 | char d_name[1]; | ^~~~~~ This helps with the ongoing efforts to globally enable -Wstringop-overflow. This results in no differences in binary output. Link: KSPP#79 Link: KSPP#312 Signed-off-by: Gustavo A. R. Silva <[email protected]> Reviewed-by: Kees Cook <[email protected]> Message-Id: <ZJHiPJkNKwxkKz1c@work> Signed-off-by: Christian Brauner <[email protected]>
1 parent d7439fb commit 2507135

File tree

1 file changed

+4
-4
lines changed

1 file changed

+4
-4
lines changed

fs/readdir.c

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -131,7 +131,7 @@ struct old_linux_dirent {
131131
unsigned long d_ino;
132132
unsigned long d_offset;
133133
unsigned short d_namlen;
134-
char d_name[1];
134+
char d_name[];
135135
};
136136

137137
struct readdir_callback {
@@ -208,7 +208,7 @@ struct linux_dirent {
208208
unsigned long d_ino;
209209
unsigned long d_off;
210210
unsigned short d_reclen;
211-
char d_name[1];
211+
char d_name[];
212212
};
213213

214214
struct getdents_callback {
@@ -388,7 +388,7 @@ struct compat_old_linux_dirent {
388388
compat_ulong_t d_ino;
389389
compat_ulong_t d_offset;
390390
unsigned short d_namlen;
391-
char d_name[1];
391+
char d_name[];
392392
};
393393

394394
struct compat_readdir_callback {
@@ -460,7 +460,7 @@ struct compat_linux_dirent {
460460
compat_ulong_t d_ino;
461461
compat_ulong_t d_off;
462462
unsigned short d_reclen;
463-
char d_name[1];
463+
char d_name[];
464464
};
465465

466466
struct compat_getdents_callback {

0 commit comments

Comments
 (0)