aboutsummaryrefslogtreecommitdiffstats
path: root/g10/passphrase.c
diff options
context:
space:
mode:
Diffstat (limited to 'g10/passphrase.c')
-rw-r--r--g10/passphrase.c13
1 files changed, 8 insertions, 5 deletions
diff --git a/g10/passphrase.c b/g10/passphrase.c
index ac3f0311e..5345fb9b7 100644
--- a/g10/passphrase.c
+++ b/g10/passphrase.c
@@ -614,9 +614,12 @@ agent_get_passphrase ( u32 *keyid, int mode, const char *tryagain_text )
memset (fpr, 0, MAX_FINGERPRINT_LEN );
if( keyid && get_pubkey( pk, keyid ) )
- pk = NULL; /* oops: no key for some reason */
+ {
+ free_public_key( pk );
+ pk = NULL; /* oops: no key for some reason */
+ }
- if ( !mode && pk )
+ if ( !mode && pk && keyid )
{
char *uid;
size_t uidlen;
@@ -658,10 +661,10 @@ agent_get_passphrase ( u32 *keyid, int mode, const char *tryagain_text )
}
}
- else if (mode == 1 )
- atext = m_strdup ( _("Enter passphrase\n") );
- else
+ else if (mode == 2 )
atext = m_strdup ( _("Repeat passphrase\n") );
+ else
+ atext = m_strdup ( _("Enter passphrase\n") );
if ( (fd = agent_open (&prot)) == -1 )
goto failure;