From 777019faf0b8f10a897c3ee477d35f9b29f02224 Mon Sep 17 00:00:00 2001 From: NIIBE Yutaka Date: Fri, 20 Nov 2020 15:35:27 +0900 Subject: [PATCH] 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 --- g10/call-agent.c | 10 ++++++++-- g10/card-util.c | 15 +++------------ g10/skclist.c | 9 ++------- 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); }