From d780cf36323f178dae34e2d654be050ac984c488 Mon Sep 17 00:00:00 2001 From: Samuel Ortiz Date: Tue, 16 Oct 2012 15:04:10 +0200 Subject: [PATCH] --- yaml --- r: 340955 b: refs/heads/master c: b874dec21d1cb7a08fcbe4e442a789419dd1d51f h: refs/heads/master i: 340953: 445d7391268a0475e99400ae71269b8654204917 340951: f9bb8eb7c8469fbfd5580d3b721de41d1c2ed9be v: v3 --- [refs] | 2 +- trunk/net/nfc/llcp/sock.c | 19 +++++++++++++++++++ 2 files changed, 20 insertions(+), 1 deletion(-) diff --git a/[refs] b/[refs] index eb2d73b1a16f..119dd5b24168 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: 94f418a206648c9be6fd84d6681d6956b8f8b106 +refs/heads/master: b874dec21d1cb7a08fcbe4e442a789419dd1d51f diff --git a/trunk/net/nfc/llcp/sock.c b/trunk/net/nfc/llcp/sock.c index d511a4c2fef6..0fa1e92ceac8 100644 --- a/trunk/net/nfc/llcp/sock.c +++ b/trunk/net/nfc/llcp/sock.c @@ -608,6 +608,25 @@ static int llcp_sock_sendmsg(struct kiocb *iocb, struct socket *sock, lock_sock(sk); + if (sk->sk_type == SOCK_DGRAM) { + struct sockaddr_nfc_llcp *addr = + (struct sockaddr_nfc_llcp *)msg->msg_name; + + if (msg->msg_namelen < sizeof(*addr)) { + release_sock(sk); + + pr_err("Invalid socket address length %d\n", + msg->msg_namelen); + + return -EINVAL; + } + + release_sock(sk); + + return nfc_llcp_send_ui_frame(llcp_sock, addr->dsap, addr->ssap, + msg, len); + } + if (sk->sk_state != LLCP_CONNECTED) { release_sock(sk); return -ENOTCONN;