From c5095dfec66502332f6a3ede0df541501d905b81 Mon Sep 17 00:00:00 2001 From: Pol Henarejos Date: Tue, 27 Sep 2022 22:10:47 +0200 Subject: [PATCH] Only send response apdu if sw != 0. Signed-off-by: Pol Henarejos --- src/apdu.c | 28 +++++++++++++++------------- 1 file changed, 15 insertions(+), 13 deletions(-) diff --git a/src/apdu.c b/src/apdu.c index dfa0b0e..4699114 100644 --- a/src/apdu.c +++ b/src/apdu.c @@ -169,18 +169,20 @@ void apdu_finish() { } size_t apdu_next() { - if (apdu.rlen <= apdu.ne) - return apdu.rlen + 2; - else { - rdata_gr = apdu.rdata+apdu.ne; - rdata_bk = *(uint16_t *)rdata_gr; - rdata_gr[0] = 0x61; - if (apdu.rlen - apdu.ne >= 256) - rdata_gr[1] = 0; - else - rdata_gr[1] = apdu.rlen - apdu.ne; - apdu.rlen -= apdu.ne; + if (apdu.sw != 0) { + if (apdu.rlen <= apdu.ne) + return apdu.rlen + 2; + else { + rdata_gr = apdu.rdata+apdu.ne; + rdata_bk = *(uint16_t *)rdata_gr; + rdata_gr[0] = 0x61; + if (apdu.rlen - apdu.ne >= 256) + rdata_gr[1] = 0; + else + rdata_gr[1] = apdu.rlen - apdu.ne; + apdu.rlen -= apdu.ne; + } + return apdu.ne + 2; } - return apdu.ne + 2; + return 0; } -