Mercurial > hg
changeset 2202:ff18feb75a6d
PGP: Add a trailing NULL after a message is PGP-encrypted
This patch fixes another issue reported in #134.
author | Mikael Berthe <mikael@lilotux.net> |
---|---|
date | Mon, 12 Oct 2015 11:41:34 +0200 |
parents | 1c8ca1a8e5fe |
children | 170597f5365b |
files | mcabber/mcabber/pgp.c |
diffstat | 1 files changed, 16 insertions(+), 9 deletions(-) [+] |
line wrap: on
line diff
--- 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); }