aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorNIIBE Yutaka <[email protected]>2019-07-10 06:06:54 +0000
committerDaniel Kahn Gillmor <[email protected]>2019-07-20 18:16:21 +0000
commit9e12829299c777d1d869e0d8e584f46d391fd931 (patch)
tree77c11eb28d3ca49e6603ed0db8087298dd75a798
parentgpg: drop import-clean from default keyserver import options (diff)
downloadgnupg-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.c9
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: