• Kees Cook's avatar
    smb3: Replace smb2pdu 1-element arrays with flex-arrays · eb3e28c1
    Kees Cook authored
    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: default avatarNamjae Jeon <linkinjeon@kernel.org>
    Signed-off-by: default avatarKees Cook <keescook@chromium.org>
    Signed-off-by: default avatarSteve French <stfrench@microsoft.com>
    eb3e28c1
smb2pdu.c 159 KB