commit 3a8df4ede9bb943828911d1d09e7bec67704c791 parent fee90dbf349e4d16a11a4ec66ed21ea7610ce8f1 Author: Paul <paul@claws-mail.org> Date: Tue, 17 Nov 2015 18:12:36 +0000 reinistate 1b32cc6794190c9fb6124b6de5b6f23e3007eec9 but with an addition check, eliminating the unwanted behaviour Diffstat:
| M | src/plugins/pgpcore/sgpgme.c | | | 13 | ++++++++++++- |
1 file changed, 12 insertions(+), 1 deletion(-)
diff --git a/src/plugins/pgpcore/sgpgme.c b/src/plugins/pgpcore/sgpgme.c @@ -218,7 +218,18 @@ gchar *sgpgme_sigstat_info_short(gpgme_ctx_t ctx, gpgme_verify_result_t status) } else if (gpg_err_code(err) != GPG_ERR_NO_ERROR && gpg_err_code(err) != GPG_ERR_EOF) { return g_strdup_printf(_("The signature can't be checked - %s"), gpgme_strerror(err)); - } + } else if (gpg_err_code(err) != GPG_ERR_NO_ERROR && gpg_err_code(err) == GPG_ERR_EOF && + key == NULL) { + /* + * When gpg is upgraded to gpg-v21 then installer tries to migrate the old + * gpg keyrings found in ~/.gnupg to the new version. If the keyrings contain + * very old keys using ciphers no more supported in gpg-v21 this transition + * can fail and the left-over ~/.gnupg/pubring.gpg will cause claws to crash + * when the above condition is meet. + */ + return g_strdup_printf(_("The signature can't be checked - %s."), + gpgme_strerror(err)); + } if (key) uname = extract_name(key->uids->uid); else