From f2fe5b366337a274a42ab049e0b5673f527d3c5d Mon Sep 17 00:00:00 2001 From: Jouni Malinen Date: Sun, 18 Dec 2011 14:44:03 +0200 Subject: [PATCH] PCSC: Accept 0x67 (Wrong length) as a response to READ RECORD It looks like some USIM cards respond with 0x67 (Wrong length) instead of 0x6c to 00 b2 01 04 ff. This was getting rejected in scard_get_record_len(). ETSI TS 102 221 is not very clear on this detail, but it looks fine to accept the 0x67 error value, too, to learn the record length. Signed-hostap: Jouni Malinen --- src/utils/pcsc_funcs.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/utils/pcsc_funcs.c b/src/utils/pcsc_funcs.c index bf9f04a71..c36193e4f 100644 --- a/src/utils/pcsc_funcs.c +++ b/src/utils/pcsc_funcs.c @@ -812,7 +812,7 @@ static int scard_get_record_len(struct scard_data *scard, unsigned char recnum, wpa_hexdump(MSG_DEBUG, "SCARD: file length determination response", buf, blen); - if (blen < 2 || buf[0] != 0x6c) { + if (blen < 2 || (buf[0] != 0x6c && buf[0] != 0x67)) { wpa_printf(MSG_DEBUG, "SCARD: unexpected response to file " "length determination"); return -1;