diff options
author | Mark A. Greer <mgreer@animalcreek.com> | 2014-09-23 19:38:04 -0400 |
---|---|---|
committer | Samuel Ortiz <sameo@linux.intel.com> | 2014-11-28 06:38:10 -0500 |
commit | 3bc3f88af5328d369ff399d90f13c566d925c245 (patch) | |
tree | c13ad10c66d7af92cf0ccbbe32ac0ac2e8d29849 /net/nfc | |
parent | 6ce306682f7f07a5e9e51c655764ead214ef3869 (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.c | 7 |
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; |