Merge pull request #98 from manu0402/master

Introduce timeout on DESfire operations
This commit is contained in:
Romain Tartière 2018-12-10 17:52:25 -10:00 committed by GitHub
commit 4deb8c998a
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23

View file

@ -168,8 +168,8 @@ static ssize_t read_data(FreefareTag tag, uint8_t command, uint8_t file_no, off
MIFARE_DESFIRE (tag)->last_pcd_error = OPERATION_OK; \
DEBUG_XFER (__msg, __len, "===> "); \
int _res; \
if ((_res = nfc_initiator_transceive_bytes (tag->device, __msg, __len, __res, __##res##_size + 1, 0)) < 0) { \
return errno = EIO, -1; \
if ((_res = nfc_initiator_transceive_bytes (tag->device, __msg, __len, __res, __##res##_size + 1, 500)) < 0) { \
return errno = (errno == ETIMEDOUT) ? errno : EIO, -1; \
} \
__##res##_n = _res; \
DEBUG_XFER (__res, __##res##_n, "<=== "); \
@ -306,8 +306,8 @@ mifare_desfire_connect(FreefareTag tag)
uint8_t AID[] = { 0xd2, 0x76, 0x00, 0x00, 0x85, 0x01, 0x00};
BUFFER_APPEND(cmd, sizeof(AID));
BUFFER_APPEND_BYTES(cmd, AID, sizeof(AID));
if ((nfc_initiator_transceive_bytes(tag->device, cmd, BUFFER_SIZE(cmd), res, BUFFER_MAXSIZE(cmd), 0) < 0) || (res[0] != 0x90 || res[1] != 0x00)) {
errno = EIO;
if ((nfc_initiator_transceive_bytes(tag->device, cmd, BUFFER_SIZE(cmd), res, BUFFER_MAXSIZE(cmd), 500) < 0) || (res[0] != 0x90 || res[1] != 0x00)) {
errno = (errno == ETIMEDOUT) ? errno : EIO;
return -1;
}
tag->active = 1;