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.
struct stats_key *key = NULL;
struct stats_key *signedkey = NULL;
struct ll *cursig = NULL;
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;
}
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) {
key->revoked = revoked;
for (cursig = key->sigs; cursig != NULL;
cursig = cursig->next) {