diff options
author | NIIBE Yutaka <[email protected]> | 2019-07-10 06:06:54 +0000 |
---|---|---|
committer | Daniel Kahn Gillmor <[email protected]> | 2019-07-20 18:16:21 +0000 |
commit | 9e12829299c777d1d869e0d8e584f46d391fd931 (patch) | |
tree | 77c11eb28d3ca49e6603ed0db8087298dd75a798 | |
parent | gpg: drop import-clean from default keyserver import options (diff) | |
download | gnupg-9e12829299c777d1d869e0d8e584f46d391fd931.tar.gz gnupg-9e12829299c777d1d869e0d8e584f46d391fd931.zip |
gpg: Fix keyring retrieval.
* g10/keyring.c (keyring_get_keyblock): Avoid O(N^2) append.
GnuPG-bug-id: 4592
Signed-off-by: NIIBE Yutaka <[email protected]>
(cherry picked from commit a7a043e82555a9da984c6fb01bfec4990d904690)
Gbp-Pq: Topic from-master
Gbp-Pq: Name gpg-Fix-keyring-retrieval.patch
-rw-r--r-- | g10/keyring.c | 9 |
1 files changed, 6 insertions, 3 deletions
diff --git a/g10/keyring.c b/g10/keyring.c index a8dd46265..f424f94fc 100644 --- a/g10/keyring.c +++ b/g10/keyring.c @@ -473,11 +473,14 @@ keyring_get_keyblock (KEYRING_HANDLE hd, KBNODE *ret_kb) } in_cert = 1; - node = lastnode = new_kbnode (pkt); + node = new_kbnode (pkt); if (!keyblock) - keyblock = node; + keyblock = lastnode = node; else - add_kbnode (keyblock, node); + { + lastnode->next = node; + lastnode = node; + } switch (pkt->pkttype) { case PKT_PUBLIC_KEY: |