From ae31408f818cfa79c89ca80dcf007dd5ada8de2b Mon Sep 17 00:00:00 2001 From: Frank Morgner Date: Wed, 16 May 2018 23:15:29 +0200 Subject: [PATCH] fixed checking SW in iso7816_read_binary_sfid fixes https://github.com/OpenSC/OpenSC/issues/1360 --- src/libopensc/iso7816.c | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/src/libopensc/iso7816.c b/src/libopensc/iso7816.c index d9ae6c40..1e889ad4 100644 --- a/src/libopensc/iso7816.c +++ b/src/libopensc/iso7816.c @@ -1320,9 +1320,13 @@ int iso7816_read_binary_sfid(sc_card_t *card, unsigned char sfid, apdu.le = read; r = sc_transmit_apdu(card, &apdu); + if (r < 0) + goto err; + r = sc_check_sw(card, apdu.sw1, apdu.sw2); + if (r < 0 && r != SC_ERROR_FILE_END_REACHED) + goto err; /* emulate the behaviour of sc_read_binary */ - if (r >= 0) - r = apdu.resplen; + r = apdu.resplen; while(1) { if (r >= 0 && ((size_t) r) != read) {