summaryrefslogtreecommitdiffstats
path: root/src/sim
diff options
context:
space:
mode:
Diffstat (limited to 'src/sim')
-rw-r--r--src/sim/reader_pcsc.c7
1 files changed, 4 insertions, 3 deletions
diff --git a/src/sim/reader_pcsc.c b/src/sim/reader_pcsc.c
index f22103f4..9e05e3c0 100644
--- a/src/sim/reader_pcsc.c
+++ b/src/sim/reader_pcsc.c
@@ -79,17 +79,18 @@ static struct osim_reader_hdl *pcsc_reader_open(int num, const char *id, void *c
rc = SCardListReaders(st->hContext, NULL, (LPSTR)&mszReaders, &dwReaders);
PCSC_ERROR(rc, "SCardListReaders");
+ /* SCARD_S_SUCCESS means there is at least one reader in the group */
num_readers = 0;
ptr = mszReaders;
- while (*ptr != '\0') {
+ while (*ptr != '\0' && num_readers != num) {
ptr += strlen(ptr)+1;
num_readers++;
}
- if (num_readers == 0)
+ if (num != num_readers)
goto end;
- st->name = talloc_strdup(rh, mszReaders);
+ st->name = talloc_strdup(rh, ptr);
st->dwActiveProtocol = -1;
return rh;