aboutsummaryrefslogtreecommitdiffstats
path: root/scd/apdu.c
diff options
context:
space:
mode:
authorNIIBE Yutaka <[email protected]>2021-05-06 10:05:30 +0000
committerNIIBE Yutaka <[email protected]>2021-05-06 10:05:30 +0000
commitd6fe82d3d1699eb417f87b487048f95fee91e2cd (patch)
tree8fb5fa82fef0a06f180be3d37f880da5e8e65073 /scd/apdu.c
parentscd: Fix PC/SC removed card problem (diff)
downloadgnupg-d6fe82d3d1699eb417f87b487048f95fee91e2cd.tar.gz
gnupg-d6fe82d3d1699eb417f87b487048f95fee91e2cd.zip
scd: When reader is specified, make sure only open once.
* scd/apdu.c (apdu_open_reader): Make sure not to try multiple times, when PORTSTR is specified. -- Signed-off-by: NIIBE Yutaka <[email protected]>
Diffstat (limited to 'scd/apdu.c')
-rw-r--r--scd/apdu.c5
1 files changed, 5 insertions, 0 deletions
diff --git a/scd/apdu.c b/scd/apdu.c
index 1dd6427da..44ef445c8 100644
--- a/scd/apdu.c
+++ b/scd/apdu.c
@@ -2142,6 +2142,11 @@ apdu_open_reader (struct dev_list *dl)
if (readerno < 0 || readerno >= dl->idx_max)
return -1;
+ /* If already opened HANDLE, return -1. */
+ for (slot = 0; slot < MAX_READER; slot++)
+ if (reader_table[slot].used)
+ return -1;
+
dl->idx = readerno;
dl->portstr = NULL;
}