aboutsummaryrefslogtreecommitdiffstats
path: root/g10/trustdb.c
diff options
context:
space:
mode:
Diffstat (limited to 'g10/trustdb.c')
-rw-r--r--g10/trustdb.c46
1 files changed, 20 insertions, 26 deletions
diff --git a/g10/trustdb.c b/g10/trustdb.c
index dd45e959f..7269afc31 100644
--- a/g10/trustdb.c
+++ b/g10/trustdb.c
@@ -1574,7 +1574,7 @@ mark_usable_uid_certs (KBNODE keyblock, KBNODE uidnode,
}
}
-int
+static int
clean_sigs_from_uid(KBNODE keyblock,KBNODE uidnode,int noisy,int self_only)
{
int deleted=0;
@@ -1712,21 +1712,27 @@ clean_uid_from_key(KBNODE keyblock,KBNODE uidnode,int noisy)
return deleted;
}
-int
-clean_uids_from_key(KBNODE keyblock,int noisy)
+/* Needs to be called after a merge_keys_and_selfsig() */
+void
+clean_one_uid(KBNODE keyblock,KBNODE uidnode,int noisy,int self_only,
+ int *uids_cleaned,int *sigs_cleaned)
{
- KBNODE uidnode;
- int deleted=0;
+ int dummy;
- merge_keys_and_selfsig(keyblock);
+ assert(keyblock->pkt->pkttype==PKT_PUBLIC_KEY);
+ assert(uidnode->pkt->pkttype==PKT_USER_ID);
- for(uidnode=keyblock->next;
- uidnode && uidnode->pkt->pkttype!=PKT_PUBLIC_SUBKEY;
- uidnode=uidnode->next)
- if(uidnode->pkt->pkttype==PKT_USER_ID)
- deleted+=clean_uid_from_key(keyblock,uidnode,noisy);
+ if(!uids_cleaned)
+ uids_cleaned=&dummy;
- return deleted;
+ if(!sigs_cleaned)
+ sigs_cleaned=&dummy;
+
+ /* Do clean_uid_from_key first since if it fires off, we don't
+ have to bother with the other */
+ *uids_cleaned+=clean_uid_from_key(keyblock,uidnode,noisy);
+ if(!uidnode->pkt->pkt.user_id->flags.compacted)
+ *sigs_cleaned+=clean_sigs_from_uid(keyblock,uidnode,noisy,self_only);
}
void
@@ -1734,13 +1740,6 @@ clean_key(KBNODE keyblock,int noisy,int self_only,
int *uids_cleaned,int *sigs_cleaned)
{
KBNODE uidnode;
- int dummy;
-
- if(!uids_cleaned)
- uids_cleaned=&dummy;
-
- if(!sigs_cleaned)
- sigs_cleaned=&dummy;
merge_keys_and_selfsig(keyblock);
@@ -1748,13 +1747,8 @@ clean_key(KBNODE keyblock,int noisy,int self_only,
uidnode && uidnode->pkt->pkttype!=PKT_PUBLIC_SUBKEY;
uidnode=uidnode->next)
if(uidnode->pkt->pkttype==PKT_USER_ID)
- {
- /* Do clean_uid_from_key first since if it fires off, we don't
- have to bother with the other */
- *uids_cleaned+=clean_uid_from_key(keyblock,uidnode,noisy);
- if(!uidnode->pkt->pkt.user_id->flags.compacted)
- *sigs_cleaned+=clean_sigs_from_uid(keyblock,uidnode,noisy,self_only);
- }
+ clean_one_uid(keyblock,uidnode,noisy,self_only,
+ uids_cleaned,sigs_cleaned);
}
/* Used by validate_one_keyblock to confirm a regexp within a trust