aboutsummaryrefslogtreecommitdiffstats
path: root/scd/apdu.c
diff options
context:
space:
mode:
authorNIIBE Yutaka <[email protected]>2021-05-10 01:49:21 +0000
committerNIIBE Yutaka <[email protected]>2021-05-10 01:49:21 +0000
commitec5591dc4e1f1b0340b9043a410dc62b63a90416 (patch)
treeab73407340632edc5ec2c7db134d0011f2218c1b /scd/apdu.c
parentscd: Make sure releasing PC/SC context. (diff)
downloadgnupg-ec5591dc4e1f1b0340b9043a410dc62b63a90416.tar.gz
gnupg-ec5591dc4e1f1b0340b9043a410dc62b63a90416.zip
scd: Fix close_pcsc_reader.
* scd/apdu.c (close_pcsc_reader): Don't touch .RDRNAME field. (apdu_dev_list_finish): Clear .RDRNAME field and replace call of close_pcsc_reader by release_pcsc_context. Add assertion. -- GnuPG-bug-id: 5416 Signed-off-by: NIIBE Yutaka <[email protected]>
Diffstat (limited to 'scd/apdu.c')
-rw-r--r--scd/apdu.c18
1 files changed, 9 insertions, 9 deletions
diff --git a/scd/apdu.c b/scd/apdu.c
index 08e195ccf..c809e6791 100644
--- a/scd/apdu.c
+++ b/scd/apdu.c
@@ -842,14 +842,7 @@ close_pcsc_reader (int slot)
(void)slot;
log_assert (pcsc.count > 0);
if (!--pcsc.count)
- {
- int i;
-
- /*log_debug ("%s: releasing context\n", __func__);*/
- release_pcsc_context ();
- for (i = 0; i < MAX_READER; i++)
- pcsc.rdrname[i] = NULL;
- }
+ release_pcsc_context ();
return 0;
}
@@ -2123,8 +2116,15 @@ apdu_dev_list_finish (struct dev_list *dl)
else
#endif
{ /* PC/SC readers. */
+ int i;
+
xfree (dl->table);
- close_pcsc_reader (0);
+ for (i = 0; i < MAX_READER; i++)
+ pcsc.rdrname[i] = NULL;
+
+ log_assert (pcsc.count > 0);
+ if (--pcsc.count == 0)
+ release_pcsc_context ();
}
xfree (dl);
}