summaryrefslogtreecommitdiffstats
path: root/net/nfc/rawsock.c
diff options
context:
space:
mode:
authorSamuel Ortiz <sameo@linux.intel.com>2012-04-10 19:43:09 +0200
committerJohn W. Linville <linville@tuxdriver.com>2012-04-12 21:10:37 +0200
commitc4fbb6515a4dcec83d340247639b5644c4745528 (patch)
tree9123c1e0b56ea1f9910ce4db1e9046bd5a8a29c4 /net/nfc/rawsock.c
parentNFC: Add HCI documentation (diff)
downloadlinux-c4fbb6515a4dcec83d340247639b5644c4745528.tar.xz
linux-c4fbb6515a4dcec83d340247639b5644c4745528.zip
NFC: The core part should generate the target index
The target index can be used by userspace to uniquely identify a target and thus should be kept unique, per NFC adapter. Moreover, some protocols do not provide a logical index when discovering new targets, so we have to generate one for them. For NCI or pn533 to fetch their logical index, we added a logical_idx field to the target structure. Signed-off-by: Samuel Ortiz <sameo@linux.intel.com> Signed-off-by: John W. Linville <linville@tuxdriver.com>
Diffstat (limited to 'net/nfc/rawsock.c')
-rw-r--r--net/nfc/rawsock.c6
1 files changed, 6 insertions, 0 deletions
diff --git a/net/nfc/rawsock.c b/net/nfc/rawsock.c
index 5a839ceb2e82..b2825aa85f64 100644
--- a/net/nfc/rawsock.c
+++ b/net/nfc/rawsock.c
@@ -92,6 +92,12 @@ static int rawsock_connect(struct socket *sock, struct sockaddr *_addr,
goto error;
}
+ if (addr->target_idx > dev->target_idx - 1 ||
+ addr->target_idx < dev->target_idx - dev->n_targets) {
+ rc = -EINVAL;
+ goto error;
+ }
+
rc = nfc_activate_target(dev, addr->target_idx, addr->nfc_protocol);
if (rc)
goto put_dev;