From cb4fee8bb645745ff199f7428e19226d5bc63dab Mon Sep 17 00:00:00 2001 From: NIIBE Yutaka <gniibe@fsij.org> Date: Thu, 28 Apr 2016 12:43:48 +0900 Subject: [PATCH] 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 <gniibe@fsij.org> --- scd/ccid-driver.c | 7 ++++--- 1 file 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)