aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorWerner Koch <[email protected]>2007-03-08 07:39:57 +0000
committerWerner Koch <[email protected]>2007-03-08 07:39:57 +0000
commitc54ef0383c3e8b53a9ab4b7f122a5a9fd1553c4f (patch)
treebcea2962c808a90cb615f69fc3da6ca3772da3f2
parentThe Cherry XX44 keyboard's PINpad does now work. (diff)
downloadgnupg-c54ef0383c3e8b53a9ab4b7f122a5a9fd1553c4f.tar.gz
gnupg-c54ef0383c3e8b53a9ab4b7f122a5a9fd1553c4f.zip
Fix from 1.4:
* keyedit.c (keyedit_menu): If we modify the keyblock (via fix_keyblock() or collapse_uids()) make sure we reprocess the keyblock so the flags are correct. Noted by Robin H. Johnson. * getkey.c (fixup_uidnode): Properly clear flags that don't apply to us (revoked, expired) so that we can reprocess a uid.
Diffstat (limited to '')
-rw-r--r--g10/ChangeLog9
-rw-r--r--g10/getkey.c13
-rw-r--r--g10/keyedit.c6
3 files changed, 23 insertions, 5 deletions
diff --git a/g10/ChangeLog b/g10/ChangeLog
index 1a43fd692..8e17c4e31 100644
--- a/g10/ChangeLog
+++ b/g10/ChangeLog
@@ -1,3 +1,12 @@
+2007-03-08 David Shaw <[email protected]> (wk)
+
+ * keyedit.c (keyedit_menu): If we modify the keyblock (via
+ fix_keyblock() or collapse_uids()) make sure we reprocess the
+ keyblock so the flags are correct. Noted by Robin H. Johnson.
+
+ * getkey.c (fixup_uidnode): Properly clear flags that don't apply
+ to us (revoked, expired) so that we can reprocess a uid.
+
2007-03-05 Werner Koch <[email protected]>
Converted this file to UTF-8.
diff --git a/g10/getkey.c b/g10/getkey.c
index d526398c6..042046de1 100644
--- a/g10/getkey.c
+++ b/g10/getkey.c
@@ -1,6 +1,6 @@
/* getkey.c - Get a key from the database
* Copyright (C) 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005,
- * 2006 Free Software Foundation, Inc.
+ * 2006, 2007 Free Software Foundation, Inc.
*
* This file is part of GnuPG.
*
@@ -1490,18 +1490,23 @@ fixup_uidnode ( KBNODE uidnode, KBNODE signode, u32 keycreated )
sig->flags.chosen_selfsig = 1; /* we chose this one */
uid->created = 0; /* not created == invalid */
- if ( IS_UID_REV ( sig ) ) {
+ if ( IS_UID_REV ( sig ) )
+ {
uid->is_revoked = 1;
return; /* has been revoked */
- }
+ }
+ else
+ uid->is_revoked = 0;
uid->expiredate = sig->expiredate;
- if(sig->flags.expired)
+ if (sig->flags.expired)
{
uid->is_expired = 1;
return; /* has expired */
}
+ else
+ uid->is_expired = 0;
uid->created = sig->timestamp; /* this one is okay */
uid->selfsigversion = sig->version;
diff --git a/g10/keyedit.c b/g10/keyedit.c
index 89f26c765..94c34e96e 100644
--- a/g10/keyedit.c
+++ b/g10/keyedit.c
@@ -1,6 +1,6 @@
/* keyedit.c - keyedit stuff
* Copyright (C) 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005,
- * 2006 Free Software Foundation, Inc.
+ * 2006, 2007 Free Software Foundation, Inc.
*
* This file is part of GnuPG.
*
@@ -1554,6 +1554,10 @@ keyedit_menu( const char *username, strlist_t locusr,
if( collapse_uids( &keyblock ) )
modified++;
reorder_keyblock(keyblock);
+ /* We modified the keyblock, so let's make sure the flags are
+ right. */
+ if (modified)
+ merge_keys_and_selfsig (keyblock);
if(seckey_check)
{/* see whether we have a matching secret key */