Skip to content

Commit

Permalink
NFC: llcp: fix info leaks via msg_name in llcp_sock_recvmsg()
Browse files Browse the repository at this point in the history
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 <[email protected]>
Cc: Aloisio Almeida Jr <[email protected]>
Cc: Samuel Ortiz <[email protected]>
Signed-off-by: Mathias Krause <[email protected]>
Signed-off-by: David S. Miller <[email protected]>
  • Loading branch information
minipli authored and davem330 committed Apr 7, 2013
1 parent 3ce5efa commit d26d650
Showing 1 changed file with 3 additions and 0 deletions.
3 changes: 3 additions & 0 deletions net/nfc/llcp/sock.c
Original file line number Diff line number Diff line change
Expand Up @@ -646,6 +646,8 @@ static int llcp_sock_recvmsg(struct kiocb *iocb, struct socket *sock,

pr_debug("%p %zu\n", sk, len);

msg->msg_namelen = 0;

lock_sock(sk);

if (sk->sk_state == LLCP_CLOSED &&
Expand Down Expand Up @@ -691,6 +693,7 @@ static int llcp_sock_recvmsg(struct kiocb *iocb, struct socket *sock,

pr_debug("Datagram socket %d %d\n", ui_cb->dsap, ui_cb->ssap);

memset(sockaddr, 0, sizeof(*sockaddr));
sockaddr->sa_family = AF_NFC;
sockaddr->nfc_protocol = NFC_PROTO_NFC_DEP;
sockaddr->dsap = ui_cb->dsap;
Expand Down

0 comments on commit d26d650

Please sign in to comment.