# HG changeset patch # User Mikael Berthe # Date 1444642894 -7200 # Node ID ff18feb75a6d7e0801cb8322fc150b38caee812c # Parent 1c8ca1a8e5febda0849a7a8858278f0c41c67626 PGP: Add a trailing NULL after a message is PGP-encrypted This patch fixes another issue reported in #134. diff -r 1c8ca1a8e5fe -r ff18feb75a6d mcabber/mcabber/pgp.c --- a/mcabber/mcabber/pgp.c Sun Oct 11 17:23:45 2015 +0200 +++ b/mcabber/mcabber/pgp.c Mon Oct 12 11:41:34 2015 +0200 @@ -344,7 +344,9 @@ err = gpgme_data_new(&out); if (!err) { err = gpgme_op_sign(ctx, in, out, GPGME_SIG_MODE_DETACH); - if (!err) { + if (err) { + gpgme_data_release(out); + } else { signed_data = gpgme_data_release_and_get_mem(out, &nread); if (signed_data) { // We need to add a trailing NULL @@ -353,8 +355,6 @@ signed_data = strip_header_footer(dd); g_free(dd); } - } else { - gpgme_data_release(out); } } gpgme_data_release(in); @@ -410,7 +410,9 @@ err = gpgme_data_new(&out); if (!err) { err = gpgme_op_decrypt(ctx, in, out); - if (!err) { + if (err) { + gpgme_data_release(out); + } else { decrypted_data = gpgme_data_release_and_get_mem(out, &nread); if (decrypted_data) { // We need to add a trailing NULL @@ -418,8 +420,6 @@ free(decrypted_data); decrypted_data = dd; } - } else { - gpgme_data_release(out); } } gpgme_data_release(in); @@ -487,10 +487,17 @@ err = gpgme_data_new(&out); if (!err) { err = gpgme_op_encrypt(ctx, keys, GPGME_ENCRYPT_ALWAYS_TRUST, in, out); - if (!err) + if (err) { + gpgme_data_release(out); + } else { encrypted_data = gpgme_data_release_and_get_mem(out, &nread); - else - gpgme_data_release(out); + if (encrypted_data) { + // We need to add a trailing NULL + char *dd = g_strndup(encrypted_data, nread); + free(encrypted_data); + encrypted_data = dd; + } + } } gpgme_data_release(in); }