aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--g10/ChangeLog5
-rw-r--r--g10/trustdb.c5
2 files changed, 8 insertions, 2 deletions
diff --git a/g10/ChangeLog b/g10/ChangeLog
index 015b78a65..0bf900aa1 100644
--- a/g10/ChangeLog
+++ b/g10/ChangeLog
@@ -1,3 +1,8 @@
+2001-11-26 David Shaw <[email protected]>
+
+ * trustdb.c (mark_usable_uid_certs): Fix segfault from bad
+ initialization and fix reversed key signature expiration check.
+
2001-11-09 Werner Koch <[email protected]>
* export.c (do_export_stream): Put all given names into a search
diff --git a/g10/trustdb.c b/g10/trustdb.c
index ec80329c6..fae540f57 100644
--- a/g10/trustdb.c
+++ b/g10/trustdb.c
@@ -995,7 +995,7 @@ mark_usable_uid_certs (KBNODE keyblock, KBNODE uidnode,
u32 curtime, u32 *next_expire)
{
KBNODE node;
- PKT_signature *sig = node->pkt->pkt.signature;
+ PKT_signature *sig;
/* first check all signatures */
for (node=uidnode->next; node; node = node->next)
@@ -1076,7 +1076,8 @@ mark_usable_uid_certs (KBNODE keyblock, KBNODE uidnode,
p = parse_sig_subpkt (sig->hashed, SIGSUBPKT_SIG_EXPIRE, NULL );
expire = p? sig->timestamp + buffer_to_u32(p) : 0;
- if ( expire < curtime )
+
+ if (expire==0 || expire > curtime )
{
signode->flag |= (1<<8); /* yeah, found a good cert */
if (expire && expire < *next_expire)