mirror of
git://git.gnupg.org/gnupg.git
synced 2024-10-29 19:48:43 +01:00
gpg: Robust error handling for SCD READKEY.
* g10/keygen.c (ask_algo): List the card key only when it's valid. -- GnuPG-bug-id: 7309 Signed-off-by: NIIBE Yutaka <gniibe@fsij.org>
This commit is contained in:
parent
0e283a0ebc
commit
e789122578
18
g10/keygen.c
18
g10/keygen.c
@ -2779,12 +2779,14 @@ ask_algo (ctrl_t ctrl, int addmode, int *r_subkey_algo, unsigned int *r_usage,
|
|||||||
const char *keyref = kpi->idstr;
|
const char *keyref = kpi->idstr;
|
||||||
int any = 0;
|
int any = 0;
|
||||||
|
|
||||||
if (keyref
|
if (!keyref)
|
||||||
&& !agent_scd_readkey (ctrl, keyref, &s_pkey, NULL))
|
continue;
|
||||||
{
|
|
||||||
algostr = pubkey_algo_string (s_pkey, &algoid);
|
if (!agent_scd_readkey (ctrl, keyref, &s_pkey, NULL))
|
||||||
gcry_sexp_release (s_pkey);
|
continue;
|
||||||
}
|
|
||||||
|
algostr = pubkey_algo_string (s_pkey, &algoid);
|
||||||
|
gcry_sexp_release (s_pkey);
|
||||||
|
|
||||||
/* We need to tweak the algo in case GCRY_PK_ECC is
|
/* We need to tweak the algo in case GCRY_PK_ECC is
|
||||||
* returned because pubkey_algo_string is not aware
|
* returned because pubkey_algo_string is not aware
|
||||||
@ -2857,9 +2859,9 @@ ask_algo (ctrl_t ctrl, int addmode, int *r_subkey_algo, unsigned int *r_usage,
|
|||||||
for (count=1,kpi=keypairlist; kpi; kpi = kpi->next, count++)
|
for (count=1,kpi=keypairlist; kpi; kpi = kpi->next, count++)
|
||||||
if (count == selection)
|
if (count == selection)
|
||||||
break;
|
break;
|
||||||
if (!kpi)
|
if (!kpi || !kpi->algo)
|
||||||
{
|
{
|
||||||
/* Just in case COUNT is zero (no keys). */
|
/* Just in case no good key. */
|
||||||
free_keypair_info (keypairlist);
|
free_keypair_info (keypairlist);
|
||||||
goto ask_again;
|
goto ask_again;
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user