aboutsummaryrefslogtreecommitdiffstats
path: root/net/nfc
diff options
context:
space:
mode:
authorMark A. Greer <mgreer@animalcreek.com>2014-09-23 19:38:04 -0400
committerSamuel Ortiz <sameo@linux.intel.com>2014-11-28 06:38:10 -0500
commit3bc3f88af5328d369ff399d90f13c566d925c245 (patch)
treec13ad10c66d7af92cf0ccbbe32ac0ac2e8d29849 /net/nfc
parent6ce306682f7f07a5e9e51c655764ead214ef3869 (diff)
NFC: digital: Ensure no DID in NFC-DEP responses
When in Initiator mode, the digital layer's NFC-DEP code always sets the Device ID (DID) value in the ATR_REQ to '0'. This means that subsequent DEP_REQ and DEP_RES frames must never include a DID byte. This is specified in sections 14.8.1.1 and 14.8.2.1 of the NFC Digital Protocol Spec. Currently, the digital layer's NFC-DEP code doesn't enforce this rule so add code to ensure that there is no DID byte in DEP_RES frames. Reviewed-by: Thierry Escande <thierry.escande@linux.intel.com> Tested-by: Thierry Escande <thierry.escande@linux.intel.com> Signed-off-by: Mark A. Greer <mgreer@animalcreek.com> Signed-off-by: Samuel Ortiz <sameo@linux.intel.com>
Diffstat (limited to 'net/nfc')
-rw-r--r--net/nfc/digital_dep.c7
1 files changed, 5 insertions, 2 deletions
diff --git a/net/nfc/digital_dep.c b/net/nfc/digital_dep.c
index f3f2b61fb5da..d07c9ab993c8 100644
--- a/net/nfc/digital_dep.c
+++ b/net/nfc/digital_dep.c
@@ -411,8 +411,11 @@ static void digital_in_recv_dep_res(struct nfc_digital_dev *ddev, void *arg,
411 411
412 pfb = dep_res->pfb; 412 pfb = dep_res->pfb;
413 413
414 if (DIGITAL_NFC_DEP_DID_BIT_SET(pfb)) 414 if (DIGITAL_NFC_DEP_DID_BIT_SET(pfb)) {
415 size++; 415 PROTOCOL_ERR("14.8.2.1");
416 rc = -EIO;
417 goto error;
418 }
416 419
417 if (size > resp->len) { 420 if (size > resp->len) {
418 rc = -EIO; 421 rc = -EIO;