* getkey.c (get_pubkey_byname), import.c (import_one): Fix key selection

problem when auto-key-locate returns a list of keys, not all of which are
usable (revoked, expired, etc).  Noted by Simon Josefsson.
This commit is contained in:
David Shaw 2006-05-22 16:53:09 +00:00
parent 6089d7f5d8
commit 7596ae1f6a
3 changed files with 19 additions and 4 deletions

View File

@ -1,3 +1,10 @@
2006-05-22 David Shaw <dshaw@jabberwocky.com>
* getkey.c (get_pubkey_byname), import.c (import_one): Fix key
selection problem when auto-key-locate returns a list of keys, not
all of which are usable (revoked, expired, etc). Noted by Simon
Josefsson.
2006-04-26 David Shaw <dshaw@jabberwocky.com>
* keyserver.c (direct_uri_map): New.

View File

@ -934,7 +934,7 @@ get_pubkey_byname (PKT_public_key *pk,
for(akl=opt.auto_key_locate;akl;akl=akl->next)
{
unsigned char *fpr;
unsigned char *fpr=NULL;
size_t fpr_len;
switch(akl->type)

View File

@ -696,9 +696,6 @@ import_one( const char *fname, KBNODE keyblock, struct stats_s *stats,
pk = node->pkt->pkt.public_key;
if(fpr)
*fpr=fingerprint_from_pk(pk,NULL,fpr_len);
keyid_from_pk( pk, keyid );
uidnode = find_next_kbnode( keyblock, PKT_USER_ID );
@ -981,6 +978,17 @@ import_one( const char *fname, KBNODE keyblock, struct stats_s *stats,
}
else if(new_key)
{
if(fpr && stats->imported==1)
{
xfree(*fpr);
*fpr=fingerprint_from_pk(pk,NULL,fpr_len);
}
else
{
xfree(*fpr);
*fpr=NULL;
}
revocation_present(keyblock);
if(seckey_available(keyid)==0)
check_prefs(keyblock);