From e8c3211f25a51f19cbc9a3cb5cb8607dc5cf8e94 Mon Sep 17 00:00:00 2001 From: merlokk <807634+merlokk@users.noreply.github.com> Date: Thu, 12 Aug 2021 19:09:21 +0300 Subject: [PATCH] fix commit transaction --- client/src/mifare/desfirecore.c | 10 ++++++++-- client/src/mifare/desfirecore.h | 1 + 2 files changed, 9 insertions(+), 2 deletions(-) diff --git a/client/src/mifare/desfirecore.c b/client/src/mifare/desfirecore.c index 63a2bbb34..c0bf04219 100644 --- a/client/src/mifare/desfirecore.c +++ b/client/src/mifare/desfirecore.c @@ -1841,13 +1841,19 @@ int DesfireCommitReaderID(DesfireContext *dctx, uint8_t *readerid, size_t reader return DesfireCommand(dctx, MFDES_COMMIT_READER_ID, rid, 16, resp, resplen, -1); } -int DesfireCommitTransaction(DesfireContext *dctx, bool enable_options, uint8_t options) { +int DesfireCommitTransactionEx(DesfireContext *dctx, bool enable_options, uint8_t options, uint8_t *resp, size_t *resplen) { if (enable_options) - return DesfireCommandTxData(dctx, MFDES_COMMIT_TRANSACTION, &options, 1); + return DesfireCommand(dctx, MFDES_COMMIT_TRANSACTION, &options, 1, resp, resplen, -1); else return DesfireCommandNoData(dctx, MFDES_COMMIT_TRANSACTION); } +int DesfireCommitTransaction(DesfireContext *dctx, bool enable_options, uint8_t options) { + uint8_t resp[250] = {0}; + size_t resplen = 0; + return DesfireCommitTransactionEx(dctx, enable_options, options, resp, &resplen); +} + int DesfireAbortTransaction(DesfireContext *dctx) { return DesfireCommandNoData(dctx, MFDES_ABORT_TRANSACTION); } diff --git a/client/src/mifare/desfirecore.h b/client/src/mifare/desfirecore.h index 940a00ecf..2838fe023 100644 --- a/client/src/mifare/desfirecore.h +++ b/client/src/mifare/desfirecore.h @@ -230,6 +230,7 @@ const char *GetDesfireFileType(uint8_t type); int DesfireCreateFile(DesfireContext *dctx, uint8_t ftype, uint8_t *fdata, size_t fdatalen, bool checklen); int DesfireDeleteFile(DesfireContext *dctx, uint8_t fnum); int DesfireCommitReaderID(DesfireContext *dctx, uint8_t *readerid, size_t readeridlen, uint8_t *resp, size_t *resplen); +int DesfireCommitTransactionEx(DesfireContext *dctx, bool enable_options, uint8_t options, uint8_t *resp, size_t *resplen); int DesfireCommitTransaction(DesfireContext *dctx, bool enable_options, uint8_t options); int DesfireAbortTransaction(DesfireContext *dctx);