• Jeff Layton's avatar
    cifs: fix possible memory corruption in CIFSFindNext · 9438fabb
    Jeff Layton authored
    The name_len variable in CIFSFindNext is a signed int that gets set to
    the resume_name_len in the cifs_search_info. The resume_name_len however
    is unsigned and for some infolevels is populated directly from a 32 bit
    value sent by the server.
    
    If the server sends a very large value for this, then that value could
    look negative when converted to a signed int. That would make that
    value pass the PATH_MAX check later in CIFSFindNext. The name_len would
    then be used as a length value for a memcpy. It would then be treated
    as unsigned again, and the memcpy scribbles over a ton of memory.
    
    Fix this by making the name_len an unsigned value in CIFSFindNext.
    
    Cc: <stable@kernel.org>
    Reported-by: default avatarDarren Lavender <dcl@hppine99.gbr.hp.com>
    Signed-off-by: default avatarJeff Layton <jlayton@redhat.com>
    Signed-off-by: default avatarSteve French <sfrench@us.ibm.com>
    9438fabb
cifssmb.c 180 KB