• J
    cifs: fix possible memory corruption in CIFSFindNext · 9438fabb
    Jeff Layton 提交于
    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: NDarren Lavender <dcl@hppine99.gbr.hp.com>
    Signed-off-by: NJeff Layton <jlayton@redhat.com>
    Signed-off-by: NSteve French <sfrench@us.ibm.com>
    9438fabb
cifssmb.c 179.6 KB