• Mathias Krause's avatar
    NFC: llcp: fix info leaks via msg_name in llcp_sock_recvmsg() · d26d6504
    Mathias Krause authored
    The code in llcp_sock_recvmsg() does not initialize all the members of
    struct sockaddr_nfc_llcp when filling the sockaddr info. Nor does it
    initialize the padding bytes of the structure inserted by the compiler
    for alignment.
    
    Also, if the socket is in state LLCP_CLOSED or is shutting down during
    receive the msg_namelen member is not updated to 0 while otherwise
    returning with 0, i.e. "success". The msg_namelen update is also
    missing for stream and seqpacket sockets which don't fill the sockaddr
    info.
    
    Both issues lead to the fact that the code will leak uninitialized
    kernel stack bytes in net/socket.c.
    
    Fix the first issue by initializing the memory used for sockaddr info
    with memset(0). Fix the second one by setting msg_namelen to 0 early.
    It will be updated later if we're going to fill the msg_name member.
    
    Cc: Lauro Ramos Venancio <lauro.venancio@openbossa.org>
    Cc: Aloisio Almeida Jr <aloisio.almeida@openbossa.org>
    Cc: Samuel Ortiz <sameo@linux.intel.com>
    Signed-off-by: default avatarMathias Krause <minipli@googlemail.com>
    Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
    d26d6504
sock.c 19.1 KB