diff options
| author | Werner Koch <[email protected]> | 2025-09-26 12:43:39 +0000 |
|---|---|---|
| committer | Werner Koch <[email protected]> | 2025-09-26 12:46:14 +0000 |
| commit | 600df5259db0b7be25a2e2b06c0c2d13265eceea (patch) | |
| tree | a019d82c85e29353a3988fb761ea1b8ce4bb2467 /g10/free-packet.c | |
| parent | w32: Fix gnupg_isatty. (diff) | |
| download | gnupg-600df5259db0b7be25a2e2b06c0c2d13265eceea.tar.gz gnupg-600df5259db0b7be25a2e2b06c0c2d13265eceea.zip | |
gpg: Detect duplicate keys with --add-recipients.
* g10/packet.h (struct pubkey_enc_list): Change to use a union to also
store symkey_enc data. Adjust all users accordingly.
(struct pubkey_enc_info_item): New.
* g10/free-packet.c (free_pubkey_enc_list): New.
* g10/mainproc.c (release_list): Use it here.
* g10/decrypt.c (decrypt_message): and here.
* g10/encrypt.c (reencrypt_to_new_recipients): Record the used
pubkey_enc packets and pass them to write_pubkey_enc_from_list.
(write_pubkey_enc_from_list): Add arg restrict_pk_list and use it to
skip recipients already used.
--
GnuPG-bug-id: 1825
Note that we here already prepare to better handle symkey_enc packets.
Diffstat (limited to 'g10/free-packet.c')
| -rw-r--r-- | g10/free-packet.c | 16 |
1 files changed, 16 insertions, 0 deletions
diff --git a/g10/free-packet.c b/g10/free-packet.c index 3a9e17665..47615596a 100644 --- a/g10/free-packet.c +++ b/g10/free-packet.c @@ -538,6 +538,22 @@ free_packet (PACKET *pkt, parse_packet_ctx_t parsectx) } +/* Free a entire list of public key encrypted data. */ +void +free_pubkey_enc_list (struct pubkey_enc_list *pkenc_list) +{ + while (pkenc_list) + { + struct pubkey_enc_list *tmp = pkenc_list->next; + + if (!pkenc_list->u_sym) + release_pubkey_enc_parts (&pkenc_list->u.pub); + xfree (pkenc_list); + pkenc_list = tmp; + } +} + + /**************** * returns 0 if they match. */ |
