From 5cbbf79bcc6cd2cce3e9606086f8513f90753fca Mon Sep 17 00:00:00 2001 From: Colin Leroy Date: Sun, 12 Nov 2006 18:33:29 +0000 Subject: [PATCH] 2006-11-12 [colin] 2.6.0cvs37 * src/plugins/pgpinline/pgpinline.c * src/plugins/pgpmime/pgpmime.c Release GPG context at the latest possible moment. Maybe fixes bug 1057, 'crash on sending signed message to a newsgroup' --- ChangeLog | 10 ++++++++++ PATCHSETS | 1 + configure.ac | 2 +- src/plugins/pgpinline/pgpinline.c | 11 +++++++---- src/plugins/pgpmime/pgpmime.c | 5 +++-- 5 files changed, 22 insertions(+), 7 deletions(-) diff --git a/ChangeLog b/ChangeLog index 6064a4e82..92f9407c7 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,13 @@ +2006-11-12 [colin] 2.6.0cvs37 + + * src/plugins/pgpinline/pgpinline.c + * src/plugins/pgpmime/pgpmime.c + Release GPG context at the latest + possible moment. Maybe fixes + bug 1057, 'crash on sending signed + message to a newsgroup' + + 2006-11-12 [colin] 2.6.0cvs36 * src/plugins/pgpcore/sgpgme.c diff --git a/PATCHSETS b/PATCHSETS index 0202f6705..27adb368c 100644 --- a/PATCHSETS +++ b/PATCHSETS @@ -2061,3 +2061,4 @@ ( cvs diff -u -r 1.1.2.1 -r 1.1.2.2 doc/man/claws-mail.1; cvs diff -u -r 1.10.2.26 -r 1.10.2.27 src/prefs_gtk.c; cvs diff -u -r 1.1.4.1 -r 1.1.4.2 src/plugins/clamav/README; cvs diff -u -r 1.3.2.2 -r 1.3.2.3 src/plugins/spamassassin/README; cvs diff -u -r 1.14.2.42 -r 1.14.2.43 src/plugins/trayicon/trayicon.c; cvs diff -u -r 1.30.2.11 -r 1.30.2.12 tools/README; cvs diff -u -r 1.3.2.3 -r 1.3.2.4 tools/freshmeat_search.pl; cvs diff -u -r 1.3.2.3 -r 1.3.2.4 tools/google_search.pl; cvs diff -u -r 1.3.2.3 -r 1.3.2.4 tools/multiwebsearch.pl; ) > 2.6.0cvs34.patchset ( cvs diff -u -r 1.382.2.327 -r 1.382.2.328 src/compose.c; ) > 2.6.0cvs35.patchset ( cvs diff -u -r 1.1.2.34 -r 1.1.2.35 src/plugins/pgpcore/sgpgme.c; ) > 2.6.0cvs36.patchset +( cvs diff -u -r 1.1.2.20 -r 1.1.2.21 src/plugins/pgpinline/pgpinline.c; cvs diff -u -r 1.1.2.40 -r 1.1.2.41 src/plugins/pgpmime/pgpmime.c; ) > 2.6.0cvs37.patchset diff --git a/configure.ac b/configure.ac index fc780ebef..decb81e22 100644 --- a/configure.ac +++ b/configure.ac @@ -11,7 +11,7 @@ MINOR_VERSION=6 MICRO_VERSION=0 INTERFACE_AGE=0 BINARY_AGE=0 -EXTRA_VERSION=36 +EXTRA_VERSION=37 EXTRA_RELEASE= EXTRA_GTK2_VERSION= diff --git a/src/plugins/pgpinline/pgpinline.c b/src/plugins/pgpinline/pgpinline.c index ae941606c..c7ae09380 100644 --- a/src/plugins/pgpinline/pgpinline.c +++ b/src/plugins/pgpinline/pgpinline.c @@ -279,6 +279,8 @@ static gint pgpinline_check_signature(MimeInfo *mimeinfo) gpgme_data_release(plain); gpgme_data_release(cipher); + gpgme_release(ctx); + g_free(textdata); return 0; @@ -579,14 +581,13 @@ static gboolean pgpinline_sign(MimeInfo *mimeinfo, PrefsAccount *account) sigcontent = gpgme_data_release_and_get_mem(gpgsig, &len); - gpgme_release(ctx); - if (sigcontent == NULL || len <= 0) { g_warning("gpgme_data_release_and_get_mem failed"); privacy_set_error(_("Data signing failed, no contents.")); gpgme_data_release(gpgtext); g_free(textstr); g_free(sigcontent); + gpgme_release(ctx); return FALSE; } @@ -611,7 +612,8 @@ static gboolean pgpinline_sign(MimeInfo *mimeinfo, PrefsAccount *account) * chars */ procmime_encode_content(msgcontent, ENC_BASE64); - + gpgme_release(ctx); + return TRUE; } @@ -696,7 +698,6 @@ static gboolean pgpinline_encrypt(MimeInfo *mimeinfo, const gchar *encrypt_data) err = gpgme_op_encrypt(ctx, kset, GPGME_ENCRYPT_ALWAYS_TRUST, gpgtext, gpgenc); - gpgme_release(ctx); enccontent = gpgme_data_release_and_get_mem(gpgenc, &len); if (enccontent == NULL || len <= 0) { @@ -704,6 +705,7 @@ static gboolean pgpinline_encrypt(MimeInfo *mimeinfo, const gchar *encrypt_data) privacy_set_error(_("Encryption failed, %s"), gpgme_strerror(err)); gpgme_data_release(gpgtext); g_free(textstr); + gpgme_release(ctx); return FALSE; } @@ -724,6 +726,7 @@ static gboolean pgpinline_encrypt(MimeInfo *mimeinfo, const gchar *encrypt_data) msgcontent->data.mem = g_strdup(tmp); msgcontent->content = MIMECONTENT_MEM; g_free(tmp); + gpgme_release(ctx); return TRUE; } diff --git a/src/plugins/pgpmime/pgpmime.c b/src/plugins/pgpmime/pgpmime.c index 38f4e544c..bccc0744f 100644 --- a/src/plugins/pgpmime/pgpmime.c +++ b/src/plugins/pgpmime/pgpmime.c @@ -530,7 +530,6 @@ gboolean pgpmime_sign(MimeInfo *mimeinfo, PrefsAccount *account) return FALSE; } - gpgme_release(ctx); sigcontent = gpgme_data_release_and_get_mem(gpgsig, &len); gpgme_data_release(gpgtext); g_free(textstr); @@ -560,6 +559,7 @@ gboolean pgpmime_sign(MimeInfo *mimeinfo, PrefsAccount *account) g_node_append(sigmultipart->node, newinfo->node); g_free(sigcontent); + gpgme_release(ctx); return TRUE; } @@ -646,7 +646,6 @@ gboolean pgpmime_encrypt(MimeInfo *mimeinfo, const gchar *encrypt_data) err = gpgme_op_encrypt(ctx, kset, GPGME_ENCRYPT_ALWAYS_TRUST, gpgtext, gpgenc); - gpgme_release(ctx); enccontent = gpgme_data_release_and_get_mem(gpgenc, &len); gpgme_data_release(gpgtext); g_free(textstr); @@ -654,6 +653,7 @@ gboolean pgpmime_encrypt(MimeInfo *mimeinfo, const gchar *encrypt_data) if (enccontent == NULL || len <= 0) { g_warning("gpgme_data_release_and_get_mem failed"); privacy_set_error(_("Encryption failed, %s"), gpgme_strerror(err)); + gpgme_release(ctx); return FALSE; } @@ -679,6 +679,7 @@ gboolean pgpmime_encrypt(MimeInfo *mimeinfo, const gchar *encrypt_data) g_node_append(encmultipart->node, newinfo->node); g_free(enccontent); + gpgme_release(ctx); return TRUE; } -- 2.25.1