From 52efac0f79343cd80f1b7815ea416fc4036aa54b Mon Sep 17 00:00:00 2001 From: Jonathan McDowell Date: Sat, 26 Dec 2009 12:09:21 +0000 Subject: [PATCH] Don't add a key to the stats hash if it doesn't have any sigs We always added a key to the stats hash if we tried to find its sigs, even if it didn't exist. So if it doesn't have any sigs (either because it doesn't exist or it's just a non linked in key), don't add it. Closes Debian bug #542187. --- keydb.c | 14 +++++++++++--- 1 file changed, 11 insertions(+), 3 deletions(-) diff --git a/keydb.c b/keydb.c index 0039057..42eebfe 100644 --- a/keydb.c +++ b/keydb.c @@ -105,16 +105,24 @@ struct ll *generic_cached_getkeysigs(uint64_t keyid) struct stats_key *key = NULL; struct stats_key *signedkey = NULL; struct ll *cursig = NULL; + struct ll *sigs = NULL; bool revoked = false; if (keyid == 0) { return NULL; } - key = createandaddtohash(keyid); + key = findinhash(keyid); - if (key->gotsigs == false) { - key->sigs = config.dbbackend->getkeysigs(key->keyid, &revoked); + if (key == NULL || key->gotsigs == false) { + sigs = config.dbbackend->getkeysigs(keyid, &revoked); + if (sigs == NULL) { + return NULL; + } + if (key == NULL) { + key = createandaddtohash(keyid); + } + key->sigs = sigs; key->revoked = revoked; for (cursig = key->sigs; cursig != NULL; cursig = cursig->next) { -- 2.30.2