aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorNIIBE Yutaka <[email protected]>2016-04-28 03:43:48 +0000
committerNIIBE Yutaka <[email protected]>2016-04-28 03:43:48 +0000
commitcb4fee8bb645745ff199f7428e19226d5bc63dab (patch)
tree240fa115860a8020ac90eca620942c65b59e2229
parentscd: Fix memory leaks. (diff)
downloadgnupg-cb4fee8bb645745ff199f7428e19226d5bc63dab.tar.gz
gnupg-cb4fee8bb645745ff199f7428e19226d5bc63dab.zip
scd: Fix error return path.
* scd/ccid-driver.c (bulk_in): Remove EAGAIN handling. Handle LIBUSB_ERROR_NO_DEVICE to return CCID_DRIVER_ERR_NO_READER. -- GnuPG-bug-id: 2306 Signed-off-by: NIIBE Yutaka <[email protected]>
-rw-r--r--scd/ccid-driver.c7
1 files changed, 4 insertions, 3 deletions
diff --git a/scd/ccid-driver.c b/scd/ccid-driver.c
index 601681fab..985404f86 100644
--- a/scd/ccid-driver.c
+++ b/scd/ccid-driver.c
@@ -1976,11 +1976,12 @@ bulk_in (ccid_driver_t handle, unsigned char *buffer, size_t length,
if (rc < 0)
{
DEBUGOUT_1 ("usb_bulk_read error: %s\n", libusb_error_name (rc));
- if (rc == EAGAIN && eagain_retries++ < 3)
+ if (rc == LIBUSB_ERROR_NO_DEVICE)
{
- my_sleep (1);
- goto retry;
+ handle->enodev_seen = 1;
+ return CCID_DRIVER_ERR_NO_READER;
}
+
return CCID_DRIVER_ERR_CARD_IO_ERROR;
}
if (msglen < 0)