diff options
author | NIIBE Yutaka <[email protected]> | 2021-05-10 01:49:21 +0000 |
---|---|---|
committer | NIIBE Yutaka <[email protected]> | 2021-05-10 01:49:21 +0000 |
commit | ec5591dc4e1f1b0340b9043a410dc62b63a90416 (patch) | |
tree | ab73407340632edc5ec2c7db134d0011f2218c1b /scd/apdu.c | |
parent | scd: Make sure releasing PC/SC context. (diff) | |
download | gnupg-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.c | 18 |
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); } |