From a630672a517e95bb36225a1303218de2b41ca761 Mon Sep 17 00:00:00 2001 From: Krista Bennett Date: Mon, 12 Jul 2021 12:45:43 +0200 Subject: [PATCH] Justus mem patches to sequoia driver --- src/pgp_sequoia.c | 25 ++++++++++++++++--------- 1 file changed, 16 insertions(+), 9 deletions(-) diff --git a/src/pgp_sequoia.c b/src/pgp_sequoia.c index c8076b47..e1e969c6 100644 --- a/src/pgp_sequoia.c +++ b/src/pgp_sequoia.c @@ -1508,7 +1508,7 @@ decrypt_cb(void *cookie_opaque, for (size_t i = 0; i < pkesk_count; i ++) { pgp_pkesk_t pkesk = pkesks[i]; - pgp_keyid_t keyid = pgp_pkesk_recipient(pkesk); /* Reference. */ + pgp_keyid_t keyid = pgp_pkesk_recipient(pkesk); char *keyid_str = pgp_keyid_to_hex(keyid); pgp_cert_key_iter_t key_iter = NULL; pgp_key_amalgamation_t ka = NULL; @@ -1610,6 +1610,7 @@ decrypt_cb(void *cookie_opaque, cookie->decrypted = 1; eol: + pgp_keyid_free (keyid); pgp_session_key_free (sk); free(keyid_str); pgp_key_free (key); @@ -1621,7 +1622,7 @@ decrypt_cb(void *cookie_opaque, // Consider wildcard recipients. if (wildcards) for (size_t i = 0; i < pkesk_count && !cookie->decrypted; i ++) { pgp_pkesk_t pkesk = pkesks[i]; - pgp_keyid_t keyid = pgp_pkesk_recipient(pkesk); /* Reference. */ + pgp_keyid_t keyid = pgp_pkesk_recipient(pkesk); char *keyid_str = pgp_keyid_to_hex(keyid); pgp_cert_key_iter_t key_iter = NULL; pgp_key_amalgamation_t ka = NULL; @@ -1712,6 +1713,7 @@ decrypt_cb(void *cookie_opaque, key_iter = NULL; } eol2: + pgp_keyid_free (keyid); pgp_session_key_free (sk); free(keyid_str); pgp_key_free (key); @@ -2067,10 +2069,13 @@ PEP_STATUS pgp_decrypt_and_verify( stringlist_add(cookie.signer_keylist, ""); *keylist = cookie.signer_keylist; + cookie.signer_keylist = NULL; /* Moved. */ stringlist_append(*keylist, cookie.recipient_keylist); - if (filename_ptr) + if (filename_ptr) { *filename_ptr = cookie.filename; + cookie.filename = NULL; /* Moved. */ + } out: if (status == PEP_STATUS_OK) { @@ -2101,12 +2106,13 @@ PEP_STATUS pgp_decrypt_and_verify( status = PEP_DECRYPTED; } } else { - free_stringlist(cookie.recipient_keylist); - free_stringlist(cookie.signer_keylist); - free(cookie.filename); free(*ptext); + *ptext = NULL; } + free_stringlist(cookie.recipient_keylist); + free_stringlist(cookie.signer_keylist); + free(cookie.filename); pgp_reader_free(reader); pgp_reader_free(decryptor); pgp_writer_free(writer); @@ -2214,6 +2220,7 @@ PEP_STATUS pgp_verify_text( stringlist_add(cookie.signer_keylist, ""); *keylist = cookie.signer_keylist; + cookie.signer_keylist = NULL; /* Moved. */ stringlist_append(*keylist, cookie.recipient_keylist); out: @@ -2244,11 +2251,11 @@ PEP_STATUS pgp_verify_text( // don't have the keys). status = PEP_UNENCRYPTED; } - } else { - free_stringlist(cookie.recipient_keylist); - free_stringlist(cookie.signer_keylist); } + free_stringlist(cookie.recipient_keylist); + free_stringlist(cookie.signer_keylist); + pgp_reader_free(reader); pgp_reader_free(dsig_reader);