scd: fix for Vega Alpha reader

NIIBE Yutaka gniibe at fsij.org
Tue Aug 27 03:14:09 CEST 2013


This is a fix for Vega Alpha reader.

The length of command was wrong.  The card may be inactive or there
may be no card yet, and we need to handle those cases.

This is an obvious fix.  I will commit this change to both of master
and STABLE-BRANCH-2-0.


diff --git a/scd/ccid-driver.c b/scd/ccid-driver.c
index 8c91767..3376be0 100644
--- a/scd/ccid-driver.c
+++ b/scd/ccid-driver.c
@@ -1534,6 +1534,7 @@ ccid_vendor_specific_init (ccid_driver_t handle)
 {
   if (handle->id_vendor == VENDOR_VEGA && handle->id_product == VEGA_ALPHA)
     {
+      int r;
       /*
        * Vega alpha has a feature to show retry counter on the pinpad
        * display.  But it assumes that the card returns the value of
@@ -1542,9 +1543,12 @@ ccid_vendor_specific_init (ccid_driver_t handle)
        * VERIFY command with empty data.  This vendor specific command
        * sequence is to disable the feature.
        */
-      const unsigned char cmd[] = "\xb5\x01\x00\x03\x00";
+      const unsigned char cmd[] = { '\xb5', '\x01', '\x00', '\x03', '\x00' };
 
-      return send_escape_cmd (handle, cmd, sizeof (cmd), NULL, 0, NULL);
+      r = send_escape_cmd (handle, cmd, sizeof (cmd), NULL, 0, NULL);
+      if (r != 0 && r != CCID_DRIVER_ERR_CARD_INACTIVE
+          && r != CCID_DRIVER_ERR_NO_CARD)
+        return r;
     }
 
   return 0;
-- 





More information about the Gnupg-devel mailing list