talons

Fork of Claws Mail https://www.claws-mail
Log | Files | Refs | README | LICENSE

commit 1b32cc6794190c9fb6124b6de5b6f23e3007eec9
parent 70782f3f2c9fbabd40ae82ffd8853294b600d88c
Author: Michael Rasmussen <mir@datanom.net>
Date:   Thu, 20 Aug 2015 01:26:33 +0200

Fix possible crash when gpg is upgraded to gpg-v21

Diffstat:
Msrc/plugins/pgpcore/sgpgme.c | 12++++++++++++
1 file changed, 12 insertions(+), 0 deletions(-)

diff --git a/src/plugins/pgpcore/sgpgme.c b/src/plugins/pgpcore/sgpgme.c @@ -218,6 +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) { + /* + * 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. Removing\n" + "left-over ~/.gnupg/pubring.gpg might solve the\n" + "problem if you have installed gpg-v21"), + gpgme_strerror(err)); } if (key) uname = extract_name(key->uids->uid);