aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorNIIBE Yutaka <gniibe@fsij.org>2020-11-20 15:35:27 +0900
committerNIIBE Yutaka <gniibe@fsij.org>2020-11-20 17:19:45 +0900
commit777019faf0b8f10a897c3ee477d35f9b29f02224 (patch)
tree05874c988358062f7ab789c841ff5429ec645c4d
parentcc8b99d18e26397028ca185e44d0886a94cc1bf6 (diff)
downloadgnupg-777019faf0b8f10a897c3ee477d35f9b29f02224.tar.gz
gpg: Change API of agent_scd_serialno.
* g10/call-agent.c (agent_scd_serialno): Extend API to allow with R_SERIALNO == NULL. * g10/card-util.c (card_status): Use NULL for agent_scd_serialno. (factory_reset): Likewise. * g10/skclist.c (build_sk_list): Likewise. Signed-off-by: NIIBE Yutaka <gniibe@fsij.org>
-rw-r--r--g10/call-agent.c10
-rw-r--r--g10/card-util.c15
-rw-r--r--g10/skclist.c9
3 files changed, 13 insertions, 21 deletions
diff --git a/g10/call-agent.c b/g10/call-agent.c
index cc0da316b..9a3b43d9e 100644
--- a/g10/call-agent.c
+++ b/g10/call-agent.c
@@ -1408,7 +1408,9 @@ agent_scd_serialno (char **r_serialno, const char *demand)
char *serialno = NULL;
char line[ASSUAN_LINELENGTH];
- *r_serialno = NULL;
+ if (r_serialno)
+ *r_serialno = NULL;
+
err = start_agent (NULL, (1 | FLAG_FOR_CARD_SUPPRESS_ERRORS));
if (err)
return err;
@@ -1427,7 +1429,11 @@ agent_scd_serialno (char **r_serialno, const char *demand)
return err;
}
- *r_serialno = serialno;
+ if (r_serialno)
+ *r_serialno = serialno;
+ else
+ xfree (serialno);
+
return 0;
}
diff --git a/g10/card-util.c b/g10/card-util.c
index 4da4a53c8..36f096f06 100644
--- a/g10/card-util.c
+++ b/g10/card-util.c
@@ -689,7 +689,6 @@ card_status (ctrl_t ctrl, estream_t fp, const char *serialno)
int err;
strlist_t card_list, sl;
char *serialno0 = NULL;
- char *serialno1 = NULL;
int all_cards = 0;
int any_card = 0;
@@ -723,7 +722,7 @@ card_status (ctrl_t ctrl, estream_t fp, const char *serialno)
tty_fprintf (fp, "\n");
any_card = 1;
- err = agent_scd_serialno (&serialno1, sl->d);
+ err = agent_scd_serialno (NULL, sl->d);
if (err)
{
if (opt.verbose)
@@ -733,19 +732,16 @@ card_status (ctrl_t ctrl, estream_t fp, const char *serialno)
}
current_card_status (ctrl, fp, NULL, 0);
- xfree (serialno1);
- serialno1 = NULL;
if (!all_cards)
goto leave;
}
/* Select the original card again. */
- err = agent_scd_serialno (&serialno1, serialno0);
+ err = agent_scd_serialno (NULL, serialno0);
leave:
xfree (serialno0);
- xfree (serialno1);
free_strlist (card_list);
}
@@ -2010,12 +2006,7 @@ factory_reset (void)
/* Then, connect the card again. */
if (!err)
- {
- char *serialno0;
-
- err = agent_scd_serialno (&serialno0, NULL);
- xfree (serialno0);
- }
+ err = agent_scd_serialno (NULL, NULL);
leave:
if (locked)
diff --git a/g10/skclist.c b/g10/skclist.c
index a4dffe3d7..c9f7d126a 100644
--- a/g10/skclist.c
+++ b/g10/skclist.c
@@ -131,17 +131,15 @@ build_sk_list (ctrl_t ctrl,
{
struct agent_card_info_s info;
PKT_public_key *pk;
- char *serialno;
memset (&info, 0, sizeof(info));
pk = xmalloc_clear (sizeof *pk);
pk->req_usage = use;
/* Check if a card is available. If any, use the key as a hint. */
- err = agent_scd_serialno (&serialno, NULL);
+ err = agent_scd_serialno (NULL, NULL);
if (!err)
{
- xfree (serialno);
err = agent_scd_getattr ("KEY-FPR", &info);
if (err)
log_error ("error retrieving key fingerprint from card: %s\n",
@@ -382,8 +380,6 @@ enum_secret_keys (ctrl_t ctrl, void **context, PKT_public_key *sk)
/* Loop over the list of secret keys. */
do
{
- char *serialno;
-
name = NULL;
keyblock = NULL;
switch (c->state)
@@ -410,10 +406,9 @@ enum_secret_keys (ctrl_t ctrl, void **context, PKT_public_key *sk)
case 3: /* Init list of card keys to try. */
c->card_keyinfo_list = NULL;
- err = agent_scd_serialno (&serialno, NULL);
+ err = agent_scd_serialno (NULL, NULL);
if (!err)
{
- xfree (serialno);
err = agent_scd_keyinfo (NULL, GCRY_PK_USAGE_ENCR,
&c->card_keyinfo_list);
}