lkml.org 
[lkml]   [2018]   [Jun]   [24]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH 4.17 38/70] cifs: For SMB2 security informaion query, check for minimum sized security descriptor instead of sizeof FileAllInformation class
    Date
    4.17-stable review patch.  If anyone has any objections, please let me know.

    ------------------

    From: Shirish Pargaonkar <shirishpargaonkar@gmail.com>

    commit ee25c6dd7b05113783ce1f4fab6b30fc00d29b8d upstream.

    Validate_buf () function checks for an expected minimum sized response
    passed to query_info() function.
    For security information, the size of a security descriptor can be
    smaller (one subauthority, no ACEs) than the size of the structure
    that defines FileInfoClass of FileAllInformation.

    Bugzilla: https://bugzilla.kernel.org/show_bug.cgi?id=199725
    Cc: <stable@vger.kernel.org>
    Signed-off-by: Shirish Pargaonkar <shirishpargaonkar@gmail.com>
    Reviewed-by: Noah Morrison <noah.morrison@rubrik.com>
    Signed-off-by: Steve French <stfrench@microsoft.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

    ---
    fs/cifs/cifsacl.h | 14 ++++++++++++++
    fs/cifs/smb2pdu.c | 3 +--
    2 files changed, 15 insertions(+), 2 deletions(-)

    --- a/fs/cifs/cifsacl.h
    +++ b/fs/cifs/cifsacl.h
    @@ -98,4 +98,18 @@ struct cifs_ace {
    struct cifs_sid sid; /* ie UUID of user or group who gets these perms */
    } __attribute__((packed));

    +/*
    + * Minimum security identifier can be one for system defined Users
    + * and Groups such as NULL SID and World or Built-in accounts such
    + * as Administrator and Guest and consists of
    + * Revision + Num (Sub)Auths + Authority + Domain (one Subauthority)
    + */
    +#define MIN_SID_LEN (1 + 1 + 6 + 4) /* in bytes */
    +
    +/*
    + * Minimum security descriptor can be one without any SACL and DACL and can
    + * consist of revision, type, and two sids of minimum size for owner and group
    + */
    +#define MIN_SEC_DESC_LEN (sizeof(struct cifs_ntsd) + (2 * MIN_SID_LEN))
    +
    #endif /* _CIFSACL_H */
    --- a/fs/cifs/smb2pdu.c
    +++ b/fs/cifs/smb2pdu.c
    @@ -2378,8 +2378,7 @@ SMB2_query_acl(const unsigned int xid, s

    return query_info(xid, tcon, persistent_fid, volatile_fid,
    0, SMB2_O_INFO_SECURITY, additional_info,
    - SMB2_MAX_BUFFER_SIZE,
    - sizeof(struct smb2_file_all_info), data, plen);
    + SMB2_MAX_BUFFER_SIZE, MIN_SEC_DESC_LEN, data, plen);
    }

    int

    \
     
     \ /
      Last update: 2018-06-24 17:44    [W:4.039 / U:0.076 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site