gnupg/scd
Werner Koch bb8e3996e4
scd: Fix problem with reader list becoming empty.
* scd/apdu.c (close_pcsc_reader): Do not decrement refcount if already
zero.  Always release context if or becomes zero.
(apdu_dev_list_start): Unlock prior to close_pcsc_reader.  For PC/SC
increment the count.  Always release the lock.
(apdu_dev_list_finish): No more unlocking.  Use close_pcsc_reader
instead of code duplication.

* scd/apdu.c (pcsc_error_string): Add an error code.
* scd/scdaemon.c (scd_kick_the_loop): Fix a diagnostic.
--

There was an obvious bug in that the pcsc.count could go below zero
and thus there was no chance to get the context release.  Releasing
and recreating the context is at least under Windows important to get
rit of the PCSC_E_SERVICE_STOPPED.

Also removes a potential problem in holding the reader_table_lock
between calls to apdu_dev_list_start apdu_dev_list_finish.  There is
no need for this.  Instead we bump the pcsc.count.

The reader_table_lock strategy should be reviewed; we may be able to
remove it.

Signed-off-by: Werner Koch <wk@gnupg.org>
2021-04-28 18:21:56 +02:00
..
ChangeLog-2011 Generate the ChangeLog from commit logs. 2011-12-01 11:09:02 +01:00
Makefile.am scd: Add very basic support for PIV cards. 2019-01-20 11:45:57 +01:00
apdu.c scd: Fix problem with reader list becoming empty. 2021-04-28 18:21:56 +02:00
apdu.h scd:p15: Make it code work again for D-Trust cards. 2021-02-23 12:56:42 +01:00
app-common.h scd: New flag --reread for LEARN 2021-04-01 10:31:52 +02:00
app-dinsig.c scd: Replace all assert macros by the log_assert macro. 2021-03-31 19:16:05 +02:00
app-geldkarte.c scd: Replace all assert macros by the log_assert macro. 2021-03-31 19:16:05 +02:00
app-help.c scd: Fix duplicate output of KEYPAIRINFO by readkey command. 2021-04-08 19:27:25 +02:00
app-nks.c scd: Fix memory leaks. 2021-04-13 14:21:29 +09:00
app-openpgp.c scd: Fix unblock PIN by a Reset Code with KDF. 2021-04-27 20:34:35 +09:00
app-p15.c scd:p15: Fix last commit and improve D-TRUST detection. 2021-04-25 16:35:36 +02:00
app-piv.c scd: New option --pcsc-shared. 2021-03-12 09:31:17 +01:00
app-sc-hsm.c scd: Replace all assert macros by the log_assert macro. 2021-03-31 19:16:05 +02:00
app.c scd: New flag --reread for LEARN 2021-04-01 10:31:52 +02:00
atr.c scd: Replace all assert macros by the log_assert macro. 2021-03-31 19:16:05 +02:00
atr.h Change all http://www.gnu.org in license notices to https:// 2016-11-05 12:02:19 +01:00
ccid-driver.c scd: Fix CCID driver for SCM SPR332/SPR532. 2021-04-08 13:41:28 +09:00
ccid-driver.h scd:ccid-driver: Fix pinpad error handling for cancel/timeout. 2020-11-27 15:17:56 +09:00
command.c scd: Fix duplicate output of KEYPAIRINFO by readkey command. 2021-04-08 19:27:25 +02:00
iso7816.c scd: Fix PSO_CSV for 512 bit curves 2021-04-22 11:04:30 +02:00
iso7816.h scd:p15: Support ECDSA and ECDH for CardOS. 2021-03-29 14:49:08 +02:00
scdaemon-w32info.rc w32: Add icons and version information. 2013-05-07 21:35:48 +02:00
scdaemon.c scd: Fix problem with reader list becoming empty. 2021-04-28 18:21:56 +02:00
scdaemon.h scd:p15: Implement CHV-STATUS attribute 2021-03-16 18:52:38 +01:00