From 4d9ea43ab24a2e36fc36d1be81b3414cc003786f Mon Sep 17 00:00:00 2001 From: Frank Morgner Date: Fri, 27 Apr 2012 10:14:25 +0200 Subject: [PATCH] iso driver: select with p2=0x0c when le is missing --- src/libopensc/iso7816.c | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/src/libopensc/iso7816.c b/src/libopensc/iso7816.c index a2eb99c7..89c644f4 100644 --- a/src/libopensc/iso7816.c +++ b/src/libopensc/iso7816.c @@ -460,17 +460,19 @@ static int iso7816_select_file(sc_card_t *card, default: SC_FUNC_RETURN(ctx, SC_LOG_DEBUG_VERBOSE, SC_ERROR_INVALID_ARGUMENTS); } - apdu.p2 = 0; /* first record, return FCI */ apdu.lc = pathlen; apdu.data = path; apdu.datalen = pathlen; if (file_out != NULL) { + apdu.p2 = 0; /* first record, return FCI */ apdu.resp = buf; apdu.resplen = sizeof(buf); apdu.le = card->max_recv_size > 0 ? card->max_recv_size : 256; - } else + } else { + apdu.p2 = 0x0C; /* first record, return nothing */ apdu.cse = (apdu.lc == 0) ? SC_APDU_CASE_1 : SC_APDU_CASE_3_SHORT; + } r = sc_transmit_apdu(card, &apdu); SC_TEST_RET(ctx, SC_LOG_DEBUG_NORMAL, r, "APDU transmit failed");