diff options
author | Daniel Hoffend <dh@dotlan.net> | 2015-12-07 00:13:59 +0100 |
---|---|---|
committer | NIIBE Yutaka <gniibe@fsij.org> | 2015-12-10 03:02:16 +0100 |
commit | d1a97585c5e73fbc7d4cf90e38f76ffc5aea305f (patch) | |
tree | b6b56bf4231379f5284ff8ecfd76fcee7d1bd31d /scd/apdu.c | |
parent | tests: Add some more gpgtar tests. (diff) | |
download | gnupg2-d1a97585c5e73fbc7d4cf90e38f76ffc5aea305f.tar.xz gnupg2-d1a97585c5e73fbc7d4cf90e38f76ffc5aea305f.zip |
scd: Fix removal of unplugged usb readers on Windows.
* scd/apdu.c (pcsc_error_to_sw): map PCSC_E_NO_SERVICE and
PCSC_E_SERVICE_STOPPED to the internal SW_HOST_NO_READER error code.
--
Signed-off-by: Daniel Hoffend <dh@dotlan.net>
GnuPG-bug-id: 2167
In Windows 8 (and later), PC/SC service only runs when reader/token is
plugged in. After its removal, it returns PCSC_E_NO_SERVICE error.
This error should be handled as no reader. This comment is by gniibe.
Diffstat (limited to '')
-rw-r--r-- | scd/apdu.c | 3 |
1 files changed, 3 insertions, 0 deletions
diff --git a/scd/apdu.c b/scd/apdu.c index 95a25611b..268a2c6dc 100644 --- a/scd/apdu.c +++ b/scd/apdu.c @@ -244,6 +244,7 @@ static char (* DLSTDCALL CT_close) (unsigned short ctn); #define PCSC_E_NOT_TRANSACTED 0x80100016 #define PCSC_E_READER_UNAVAILABLE 0x80100017 #define PCSC_E_NO_SERVICE 0x8010001D +#define PCSC_E_SERVICE_STOPPED 0x8010001E #define PCSC_W_REMOVED_CARD 0x80100069 /* Fix pcsc-lite ABI incompatibilty. */ @@ -907,6 +908,8 @@ pcsc_error_to_sw (long ec) case PCSC_E_CANCELLED: rc = SW_HOST_ABORTED; break; case PCSC_E_NO_MEMORY: rc = SW_HOST_OUT_OF_CORE; break; case PCSC_E_TIMEOUT: rc = SW_HOST_CARD_IO_ERROR; break; + case PCSC_E_NO_SERVICE: + case PCSC_E_SERVICE_STOPPED: case PCSC_E_UNKNOWN_READER: rc = SW_HOST_NO_READER; break; case PCSC_E_SHARING_VIOLATION: rc = SW_HOST_LOCKING_FAILED; break; case PCSC_E_NO_SMARTCARD: rc = SW_HOST_NO_CARD; break; |