smb3: Replace smb2pdu 1-element arrays with flex-arrays
commit eb3e28c1 upstream. The kernel is globally removing the ambiguous 0-length and 1-element arrays in favor of flexible arrays, so that we can gain both compile-time and run-time array bounds checking[1]. Replace the trailing 1-element array with a flexible array in the following structures: struct smb2_err_rsp struct smb2_tree_connect_req struct smb2_negotiate_rsp struct smb2_sess_setup_req struct smb2_sess_setup_rsp struct smb2_read_req struct smb2_read_rsp struct smb2_write_req struct smb2_write_rsp struct smb2_query_directory_req struct smb2_query_directory_rsp struct smb2_set_info_req struct smb2_change_notify_rsp struct smb2_create_rsp struct smb2_query_info_req struct smb2_query_info_rsp Replace the trailing 1-element array with a flexible array, but leave the existing structure padding: struct smb2_file_all_info struct smb2_lock_req Adjust all related size calculations to match the changes to sizeof(). No machine code output or .data section differences are produced after these changes. [1] For lots of details, see both: https://docs.kernel.org/process/deprecated.html#zero-length-and-one-element-arrays https://people.kernel.org/kees/bounded-flexible-arrays-in-c Cc: Steve French <sfrench@samba.org> Cc: Paulo Alcantara <pc@cjr.nz> Cc: Ronnie Sahlberg <lsahlber@redhat.com> Cc: Shyam Prasad N <sprasad@microsoft.com> Cc: Tom Talpey <tom@talpey.com> Cc: Namjae Jeon <linkinjeon@kernel.org> Cc: Sergey Senozhatsky <senozhatsky@chromium.org> Cc: linux-cifs@vger.kernel.org Cc: samba-technical@lists.samba.org Reviewed-by:Namjae Jeon <linkinjeon@kernel.org> Signed-off-by:
Kees Cook <keescook@chromium.org> Signed-off-by:
Steve French <stfrench@microsoft.com> Signed-off-by:
Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Showing
- fs/smb/client/smb2file.c 1 addition, 1 deletionfs/smb/client/smb2file.c
- fs/smb/client/smb2misc.c 1 addition, 1 deletionfs/smb/client/smb2misc.c
- fs/smb/client/smb2ops.c 7 additions, 7 deletionsfs/smb/client/smb2ops.c
- fs/smb/client/smb2pdu.c 7 additions, 9 deletionsfs/smb/client/smb2pdu.c
- fs/smb/client/smb2pdu.h 1 addition, 1 deletionfs/smb/client/smb2pdu.h
- fs/smb/common/smb2pdu.h 24 additions, 18 deletionsfs/smb/common/smb2pdu.h
- fs/smb/server/smb2ops.c 4 additions, 4 deletionsfs/smb/server/smb2ops.c
- fs/smb/server/smb2pdu.c 3 additions, 5 deletionsfs/smb/server/smb2pdu.c
Loading
Please register or sign in to comment