1
0
mirror of git://git.gnupg.org/gnupg.git synced 2024-11-10 21:38:50 +01:00

* packet.h, keyedit.c (menu_clean_uids_from_key), trustdb.c

(clean_uids_from_key): Fix display bug where sigs cleaned for other
reasons caused a uid to appear as if it had been compacted.
This commit is contained in:
David Shaw 2005-11-10 23:16:34 +00:00
parent ce1ce8910e
commit 843d5719e7
4 changed files with 18 additions and 20 deletions

View File

@ -1,5 +1,9 @@
2005-11-10 David Shaw <dshaw@jabberwocky.com>
* packet.h, keyedit.c (menu_clean_uids_from_key), trustdb.c
(clean_uids_from_key): Fix display bug where sigs cleaned for
other reasons caused a uid to appear as if it had been compacted.
* packet.h: Move some flags to a bitfield. Change all callers.
* options.h, import.c (parse_import_options,

View File

@ -3225,30 +3225,26 @@ menu_clean_uids_from_key(KBNODE keyblock)
if(modified)
{
KBNODE node,uidnode=NULL;
KBNODE node;
for(node=keyblock->next;node;node=node->next)
{
if(node->pkt->pkttype==PKT_USER_ID)
uidnode=node;
else if(uidnode && node->pkt->pkttype==PKT_SIGNATURE
&& is_deleted_kbnode(node))
if(node->pkt->pkttype==PKT_USER_ID
&& node->pkt->pkt.user_id->flags.compacted)
{
const char *reason;
char *user=utf8_to_native(uidnode->pkt->pkt.user_id->name,
uidnode->pkt->pkt.user_id->len,0);
char *user=utf8_to_native(node->pkt->pkt.user_id->name,
node->pkt->pkt.user_id->len,0);
if(uidnode->pkt->pkt.user_id->is_revoked)
if(node->pkt->pkt.user_id->is_revoked)
reason=_("revoked");
else if(uidnode->pkt->pkt.user_id->is_expired)
else if(node->pkt->pkt.user_id->is_expired)
reason=_("expired");
else
reason=_("invalid");
tty_printf("User ID \"%s\" compacted: %s\n",user,reason);
uidnode=NULL;
xfree(user);
}
}

View File

@ -208,6 +208,7 @@ typedef struct
/* TODO: Move more flags here */
unsigned mdc:1;
unsigned ks_modify:1;
unsigned compacted:1;
} flags;
char name[1];
} PKT_user_id;

View File

@ -1667,8 +1667,9 @@ int
clean_uids_from_key(KBNODE keyblock,int noisy)
{
int delete_until_next=0,deleting=0,deleted=0;
KBNODE node,signode=NULL;
KBNODE node;
u32 keyid[2],sigdate=0;
PKT_user_id *uid=NULL;
assert(keyblock->pkt->pkttype==PKT_PUBLIC_KEY);
@ -1682,10 +1683,8 @@ clean_uids_from_key(KBNODE keyblock,int noisy)
{
if(node->pkt->pkttype==PKT_USER_ID)
{
PKT_user_id *uid=node->pkt->pkt.user_id;
uid=node->pkt->pkt.user_id;
sigdate=0;
signode=NULL;
/* Skip valid user IDs, and non-self-signed user IDs if
--allow-non-selfsigned-uid is set. */
@ -1718,7 +1717,7 @@ clean_uids_from_key(KBNODE keyblock,int noisy)
}
}
}
else if(node->pkt->pkttype==PKT_SIGNATURE)
else if(node->pkt->pkttype==PKT_SIGNATURE && uid)
{
PKT_signature *sig=node->pkt->pkt.signature;
@ -1727,13 +1726,11 @@ clean_uids_from_key(KBNODE keyblock,int noisy)
if(IS_UID_SIG(sig) && sig->timestamp>sigdate
&& keyid[0]==sig->keyid[0] && keyid[1]==sig->keyid[1]
&& check_key_signature(keyblock,node,NULL)==0)
{
sigdate=sig->timestamp;
signode=node;
}
sigdate=sig->timestamp;
if(delete_until_next && !sig->flags.chosen_selfsig)
{
uid->flags.compacted=1;
delete_kbnode(node);
if(deleting)
{