aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorWerner Koch <[email protected]>2022-04-14 08:25:15 +0000
committerWerner Koch <[email protected]>2022-04-14 08:25:15 +0000
commit58532fe56c334d0edc589311e6601fb9da70d9a1 (patch)
tree8843dbc64e3025a7ad0458b497e9101fac8aaa62
parentscd: Fix memory leak in ccid-driver. (diff)
downloadgnupg-58532fe56c334d0edc589311e6601fb9da70d9a1.tar.gz
gnupg-58532fe56c334d0edc589311e6601fb9da70d9a1.zip
scd: Minor code reorganization
* scd/ccid-driver.c: Move struct defines to the top. (MAX_DEVICE): Rename to CCID_MAX_DEVICE.
-rw-r--r--scd/ccid-driver.c39
1 files changed, 22 insertions, 17 deletions
diff --git a/scd/ccid-driver.c b/scd/ccid-driver.c
index 4faf4af97..44c183af5 100644
--- a/scd/ccid-driver.c
+++ b/scd/ccid-driver.c
@@ -111,6 +111,10 @@
/* CCID command timeout. */
#define CCID_CMD_TIMEOUT (5*1000)
+/* Number of supported devices. See MAX_READER in apdu.c. */
+#define CCID_MAX_DEVICE 4
+
+
/* Depending on how this source is used we either define our error
output to go to stderr or to the GnuPG based logging functions. We
use the latter when GNUPG_MAJOR_VERSION or GNUPG_SCD_MAIN_HEADER
@@ -261,6 +265,19 @@ struct ccid_driver_s
};
+/* Object to keep infos about found ccid devices. */
+struct ccid_dev_table {
+ int n; /* Index to ccid_usb_dev_list */
+ int interface_number;
+ int setting_number;
+ unsigned char *ifcdesc_extra;
+ int ep_bulk_out;
+ int ep_bulk_in;
+ int ep_intr;
+ size_t ifcdesc_extra_len;
+};
+
+
static int initialized_usb; /* Tracks whether USB has been initialized. */
static int debug_level; /* Flag to control the debug output.
0 = No debugging
@@ -270,6 +287,10 @@ static int debug_level; /* Flag to control the debug output.
*/
static int ccid_usb_thread_is_alive;
+static libusb_device **ccid_usb_dev_list;
+static struct ccid_dev_table ccid_dev_table[CCID_MAX_DEVICE];
+
+
static unsigned int compute_edc (const unsigned char *data, size_t datalen,
int use_crc);
@@ -1323,22 +1344,6 @@ ccid_vendor_specific_pinpad_setup (ccid_driver_t handle)
}
-#define MAX_DEVICE 4 /* See MAX_READER in apdu.c. */
-
-struct ccid_dev_table {
- int n; /* Index to ccid_usb_dev_list */
- int interface_number;
- int setting_number;
- unsigned char *ifcdesc_extra;
- int ep_bulk_out;
- int ep_bulk_in;
- int ep_intr;
- size_t ifcdesc_extra_len;
-};
-
-static libusb_device **ccid_usb_dev_list;
-static struct ccid_dev_table ccid_dev_table[MAX_DEVICE];
-
gpg_error_t
ccid_dev_scan (int *idx_max_p, void **t_p)
{
@@ -1423,7 +1428,7 @@ ccid_dev_scan (int *idx_max_p, void **t_p)
ccid_dev_table[idx].ep_intr = find_endpoint (ifcdesc, 2);
idx++;
- if (idx >= MAX_DEVICE)
+ if (idx >= CCID_MAX_DEVICE)
{
libusb_free_config_descriptor (config);
err = 0;