PGP: Add a trailing NULL after a message is PGP-encrypted
This patch fixes another issue reported in #134.
--- 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);
}