From 52efac0f79343cd80f1b7815ea416fc4036aa54b Mon Sep 17 00:00:00 2001
From: Jonathan McDowell <noodles@earth.li>
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.39.5