diff --git a/agent/ChangeLog b/agent/ChangeLog index 7a42fb875..8f42b3273 100644 --- a/agent/ChangeLog +++ b/agent/ChangeLog @@ -1,3 +1,9 @@ +2009-03-02 Werner Koch + + * protect-tool.c (import_p12_file): Take care of canceled + passphrase entry. Fixes bug#1003. + (export_p12_file): Ditto. + 2008-12-17 Werner Koch * gpg-agent.c (handle_connections): Set action of all pth event diff --git a/agent/protect-tool.c b/agent/protect-tool.c index ddf91e03d..848ad9f4b 100644 --- a/agent/protect-tool.c +++ b/agent/protect-tool.c @@ -754,7 +754,11 @@ import_p12_file (const char *fname) gcry_sexp_release (s_key); - rc = agent_protect (key, (pw=get_new_passphrase (4)), &result, &resultlen); + pw = get_new_passphrase (4); + if (!pw) + rc = gpg_error (GPG_ERR_CANCELED); + else + rc = agent_protect (key, pw, &result, &resultlen); release_passphrase (pw); xfree (key); if (rc) @@ -981,8 +985,11 @@ export_p12_file (const char *fname) kparms[7] = sk.u; kparms[8] = NULL; - key = p12_build (kparms, cert, certlen, - (pw=get_new_passphrase (3)), opt_p12_charset, &keylen); + pw = get_new_passphrase (3); + if (!pw) + key = NULL; + else + key = p12_build (kparms, cert, certlen, pw, opt_p12_charset, &keylen); release_passphrase (pw); xfree (cert); for (i=0; i < 8; i++)