diff options
author | Werner Koch <[email protected]> | 2022-04-14 08:25:15 +0000 |
---|---|---|
committer | Werner Koch <[email protected]> | 2022-04-14 08:25:15 +0000 |
commit | 58532fe56c334d0edc589311e6601fb9da70d9a1 (patch) | |
tree | 8843dbc64e3025a7ad0458b497e9101fac8aaa62 | |
parent | scd: Fix memory leak in ccid-driver. (diff) | |
download | gnupg-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.c | 39 |
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; |