aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDavid Shaw <[email protected]>2005-11-10 23:16:34 +0000
committerDavid Shaw <[email protected]>2005-11-10 23:16:34 +0000
commit843d5719e79eb82f166fc7f37fcf323b556d256f (patch)
tree1910fd116bc62f0a0a4bb2a6a8328588c959c1e2
parent* packet.h: Move some flags to a bitfield. Change all callers. (diff)
downloadgnupg-843d5719e79eb82f166fc7f37fcf323b556d256f.tar.gz
gnupg-843d5719e79eb82f166fc7f37fcf323b556d256f.zip
* 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.
Diffstat (limited to '')
-rw-r--r--g10/ChangeLog4
-rw-r--r--g10/keyedit.c18
-rw-r--r--g10/packet.h1
-rw-r--r--g10/trustdb.c15
4 files changed, 18 insertions, 20 deletions
diff --git a/g10/ChangeLog b/g10/ChangeLog
index 89b382f0f..617598cb5 100644
--- a/g10/ChangeLog
+++ b/g10/ChangeLog
@@ -1,5 +1,9 @@
2005-11-10 David Shaw <[email protected]>
+ * 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,
diff --git a/g10/keyedit.c b/g10/keyedit.c
index 98d666767..f28f924bd 100644
--- a/g10/keyedit.c
+++ b/g10/keyedit.c
@@ -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);
}
}
diff --git a/g10/packet.h b/g10/packet.h
index 11af544ce..56d9f0bd8 100644
--- a/g10/packet.h
+++ b/g10/packet.h
@@ -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;
diff --git a/g10/trustdb.c b/g10/trustdb.c
index 47c418688..dbcab271a 100644
--- a/g10/trustdb.c
+++ b/g10/trustdb.c
@@ -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)
{