• Kees Cook's avatar
    cifs: Convert struct fealist away from 1-element array · 398d5843
    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].
    
    While struct fealist is defined as a "fake" flexible array (via a
    1-element array), it is only used for examination of the first array
    element. Walking the list is performed separately, so there is no reason
    to treat the "list" member of struct fealist as anything other than a
    single entry. Adjust the struct and code to match.
    
    Additionally, struct fea uses the "name" member either as a dynamic
    string, or is manually calculated from the start of the struct. Redefine
    the member as a flexible array.
    
    No machine code output 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: linux-cifs@vger.kernel.org
    Cc: samba-technical@lists.samba.org
    Signed-off-by: default avatarKees Cook <keescook@chromium.org>
    Signed-off-by: default avatarSteve French <stfrench@microsoft.com>
    398d5843
cifssmb.c 173 KB