Skip to content

Commit

Permalink
ksmbd: replace one-element arrays with flexible-array members
Browse files Browse the repository at this point in the history
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 structs in fs/ksmbd/smb_common.h and one in
fs/ksmbd/smb2pdu.h.

Important to mention is that doing a build before/after this patch results
in no binary output differences.

This helps with the ongoing efforts to tighten the FORTIFY_SOURCE routines
on memcpy() and help us make progress towards globally enabling
-fstrict-flex-arrays=3 [1].

Link: KSPP/linux#242
Link: KSPP/linux#79
Link: https://gcc.gnu.org/pipermail/gcc-patches/2022-October/602902.html [1]
Signed-off-by: Gustavo A. R. Silva <gustavoars@kernel.org>
Signed-off-by: Namjae Jeon <linkinjeon@kernel.org>
  • Loading branch information
GustavoARSilva authored and namjaejeon committed Nov 15, 2022
1 parent 975ffac commit 1ec8e3b
Show file tree
Hide file tree
Showing 3 changed files with 9 additions and 9 deletions.
4 changes: 2 additions & 2 deletions smb2pdu.c
Original file line number Diff line number Diff line change
Expand Up @@ -3480,7 +3480,7 @@ static int smb2_populate_readdir_entry(struct ksmbd_conn *conn, int info_level,
goto free_conv_name;
}

struct_sz = readdir_info_level_struct_sz(info_level) - 1 + conv_len;
struct_sz = readdir_info_level_struct_sz(info_level) + conv_len;
next_entry_offset = ALIGN(struct_sz, KSMBD_DIR_INFO_ALIGNMENT);
d_info->last_entry_off_align = next_entry_offset - struct_sz;

Expand Down Expand Up @@ -3737,7 +3737,7 @@ static int reserve_populate_dentry(struct ksmbd_dir_info *d_info,
return -EOPNOTSUPP;

conv_len = (d_info->name_len + 1) * 2;
next_entry_offset = ALIGN(struct_sz - 1 + conv_len,
next_entry_offset = ALIGN(struct_sz + conv_len,
KSMBD_DIR_INFO_ALIGNMENT);

if (next_entry_offset > d_info->out_buf_len) {
Expand Down
2 changes: 1 addition & 1 deletion smb2pdu.h
Original file line number Diff line number Diff line change
Expand Up @@ -1620,7 +1620,7 @@ struct smb2_posix_info {
/* SidBuffer contain two sids (UNIX user sid(16), UNIX group sid(16)) */
u8 SidBuffer[32];
__le32 name_len;
u8 name[1];
u8 name[];
/*
* var sized owner SID
* var sized group SID
Expand Down
12 changes: 6 additions & 6 deletions smb_common.h
Original file line number Diff line number Diff line change
Expand Up @@ -327,14 +327,14 @@ struct file_directory_info {
__le64 AllocationSize;
__le32 ExtFileAttributes;
__le32 FileNameLength;
char FileName[1];
char FileName[];
} __packed; /* level 0x101 FF resp data */

struct file_names_info {
__le32 NextEntryOffset;
__u32 FileIndex;
__le32 FileNameLength;
char FileName[1];
char FileName[];
} __packed; /* level 0xc FF resp data */

struct file_full_directory_info {
Expand All @@ -349,7 +349,7 @@ struct file_full_directory_info {
__le32 ExtFileAttributes;
__le32 FileNameLength;
__le32 EaSize;
char FileName[1];
char FileName[];
} __packed; /* level 0x102 FF resp */

struct file_both_directory_info {
Expand All @@ -367,7 +367,7 @@ struct file_both_directory_info {
__u8 ShortNameLength;
__u8 Reserved;
__u8 ShortName[24];
char FileName[1];
char FileName[];
} __packed; /* level 0x104 FFrsp data */

struct file_id_both_directory_info {
Expand All @@ -387,7 +387,7 @@ struct file_id_both_directory_info {
__u8 ShortName[24];
__le16 Reserved2;
__le64 UniqueId;
char FileName[1];
char FileName[];
} __packed;

struct file_id_full_dir_info {
Expand All @@ -404,7 +404,7 @@ struct file_id_full_dir_info {
__le32 EaSize; /* EA size */
__le32 Reserved;
__le64 UniqueId; /* inode num - le since Samba puts ino in low 32 bit*/
char FileName[1];
char FileName[];
} __packed; /* level 0x105 FF rsp data */

struct smb_version_values {
Expand Down

0 comments on commit 1ec8e3b

Please sign in to comment.