Mercurial > ~mikael > mcabber > hg
comparison mcabber/mcabber/pgp.c @ 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 | fec172dbacc7 |
children | 7c843b29571b |
comparison
equal
deleted
inserted
replaced
2201:1c8ca1a8e5fe | 2202:ff18feb75a6d |
---|---|
342 err = gpgme_data_new_from_mem(&in, gpg_data, strlen(gpg_data), 0); | 342 err = gpgme_data_new_from_mem(&in, gpg_data, strlen(gpg_data), 0); |
343 if (!err) { | 343 if (!err) { |
344 err = gpgme_data_new(&out); | 344 err = gpgme_data_new(&out); |
345 if (!err) { | 345 if (!err) { |
346 err = gpgme_op_sign(ctx, in, out, GPGME_SIG_MODE_DETACH); | 346 err = gpgme_op_sign(ctx, in, out, GPGME_SIG_MODE_DETACH); |
347 if (!err) { | 347 if (err) { |
348 gpgme_data_release(out); | |
349 } else { | |
348 signed_data = gpgme_data_release_and_get_mem(out, &nread); | 350 signed_data = gpgme_data_release_and_get_mem(out, &nread); |
349 if (signed_data) { | 351 if (signed_data) { |
350 // We need to add a trailing NULL | 352 // We need to add a trailing NULL |
351 char *dd = g_strndup(signed_data, nread); | 353 char *dd = g_strndup(signed_data, nread); |
352 free(signed_data); | 354 free(signed_data); |
353 signed_data = strip_header_footer(dd); | 355 signed_data = strip_header_footer(dd); |
354 g_free(dd); | 356 g_free(dd); |
355 } | 357 } |
356 } else { | |
357 gpgme_data_release(out); | |
358 } | 358 } |
359 } | 359 } |
360 gpgme_data_release(in); | 360 gpgme_data_release(in); |
361 } | 361 } |
362 if (err && err != GPG_ERR_CANCELED) | 362 if (err && err != GPG_ERR_CANCELED) |
408 err = gpgme_data_new_from_mem(&in, data, strlen(data), 0); | 408 err = gpgme_data_new_from_mem(&in, data, strlen(data), 0); |
409 if (!err) { | 409 if (!err) { |
410 err = gpgme_data_new(&out); | 410 err = gpgme_data_new(&out); |
411 if (!err) { | 411 if (!err) { |
412 err = gpgme_op_decrypt(ctx, in, out); | 412 err = gpgme_op_decrypt(ctx, in, out); |
413 if (!err) { | 413 if (err) { |
414 gpgme_data_release(out); | |
415 } else { | |
414 decrypted_data = gpgme_data_release_and_get_mem(out, &nread); | 416 decrypted_data = gpgme_data_release_and_get_mem(out, &nread); |
415 if (decrypted_data) { | 417 if (decrypted_data) { |
416 // We need to add a trailing NULL | 418 // We need to add a trailing NULL |
417 char *dd = g_strndup(decrypted_data, nread); | 419 char *dd = g_strndup(decrypted_data, nread); |
418 free(decrypted_data); | 420 free(decrypted_data); |
419 decrypted_data = dd; | 421 decrypted_data = dd; |
420 } | 422 } |
421 } else { | |
422 gpgme_data_release(out); | |
423 } | 423 } |
424 } | 424 } |
425 gpgme_data_release(in); | 425 gpgme_data_release(in); |
426 } | 426 } |
427 if (err && err != GPG_ERR_CANCELED) | 427 if (err && err != GPG_ERR_CANCELED) |
485 err = gpgme_data_new_from_mem(&in, gpg_data, strlen(gpg_data), 0); | 485 err = gpgme_data_new_from_mem(&in, gpg_data, strlen(gpg_data), 0); |
486 if (!err) { | 486 if (!err) { |
487 err = gpgme_data_new(&out); | 487 err = gpgme_data_new(&out); |
488 if (!err) { | 488 if (!err) { |
489 err = gpgme_op_encrypt(ctx, keys, GPGME_ENCRYPT_ALWAYS_TRUST, in, out); | 489 err = gpgme_op_encrypt(ctx, keys, GPGME_ENCRYPT_ALWAYS_TRUST, in, out); |
490 if (!err) | 490 if (err) { |
491 gpgme_data_release(out); | |
492 } else { | |
491 encrypted_data = gpgme_data_release_and_get_mem(out, &nread); | 493 encrypted_data = gpgme_data_release_and_get_mem(out, &nread); |
492 else | 494 if (encrypted_data) { |
493 gpgme_data_release(out); | 495 // We need to add a trailing NULL |
496 char *dd = g_strndup(encrypted_data, nread); | |
497 free(encrypted_data); | |
498 encrypted_data = dd; | |
499 } | |
500 } | |
494 } | 501 } |
495 gpgme_data_release(in); | 502 gpgme_data_release(in); |
496 } | 503 } |
497 | 504 |
498 if (err && err != GPG_ERR_CANCELED) { | 505 if (err && err != GPG_ERR_CANCELED) { |