diff --git a/g10/ChangeLog b/g10/ChangeLog index 84d0f32d2..aca625272 100644 --- a/g10/ChangeLog +++ b/g10/ChangeLog @@ -1,3 +1,16 @@ +2002-09-28 David Shaw + + * export.c (do_export_stream): Comment. + + * sig-check.c (check_key_signature2): Properly handle a + non-designated revocation import. + +2002-09-26 Werner Koch + + * g10.c (set_homedir): New. Changed all direct assignments to use + this. + * gpgv.c (set_homedir): Ditto. + 2002-09-25 David Shaw * Makefile.am: Link gpg with EGDLIBS (i.e. NETLIBS) as EGD uses diff --git a/g10/export.c b/g10/export.c index 1ec841dab..5f6eadcd5 100644 --- a/g10/export.c +++ b/g10/export.c @@ -265,10 +265,10 @@ do_export_stream( IOBUF out, STRLIST users, int secret, !node->pkt->pkt.signature->flags.exportable ) continue; /* not exportable */ - /* do not export packets with a "sensitive" revocation - key. This will need revisiting when we start - supporting creating revocation keys and not just - reading them. */ + /* Do not export packets with a "sensitive" revocation + key unless the user wants us to. Note that we do + export these when issuing the actual revocation (see + revoke.c). */ if( !(options&EXPORT_INCLUDE_SENSITIVE_REVKEYS) && node->pkt->pkt.signature->revkey ) { int i; diff --git a/g10/g10.c b/g10/g10.c index b6ed4c60a..0cf7d09e0 100644 --- a/g10/g10.c +++ b/g10/g10.c @@ -779,6 +779,17 @@ set_debug(void) } +/* We need the home directory also in some other directories, so make + sure that both variables are always in sync. */ +static void +set_homedir (char *dir) +{ + if (!dir) + dir = ""; + g10_opt_homedir = opt.homedir = dir; +} + + static void set_cmd( enum cmd_and_opt_values *ret_cmd, enum cmd_and_opt_values new_cmd ) { @@ -1122,13 +1133,13 @@ main( int argc, char **argv ) opt.keyserver_options.include_subkeys=1; opt.keyserver_options.include_revoked=1; #if defined (__MINGW32__) || defined (__CYGWIN32__) - opt.homedir = read_w32_registry_string( NULL, "Software\\GNU\\GnuPG", "HomeDir" ); + set_homedir ( read_w32_registry_string( NULL, + "Software\\GNU\\GnuPG", "HomeDir" )); #else - opt.homedir = getenv("GNUPGHOME"); + set_homedir ( getenv("GNUPGHOME") ); #endif - if( !opt.homedir || !*opt.homedir ) { - opt.homedir = GNUPG_HOMEDIR; - } + if( !*opt.homedir ) + set_homedir ( GNUPG_HOMEDIR ); /* check whether we have a config file on the commandline */ orig_argc = argc; @@ -1148,7 +1159,7 @@ main( int argc, char **argv ) else if( pargs.r_opt == oNoOptions ) default_config = 0; /* --no-options */ else if( pargs.r_opt == oHomedir ) - opt.homedir = pargs.r.ret_str; + set_homedir ( pargs.r.ret_str ); else if( pargs.r_opt == oNoPermissionWarn ) opt.no_perm_warn=1; #ifdef USE_SHM_COPROCESSING @@ -1173,7 +1184,7 @@ main( int argc, char **argv ) for (d=buf,s=opt.homedir; *s; s++) *d++ = *s == '\\'? '/': *s; *d = 0; - opt.homedir = buf; + set_homedir (buf); } #endif #ifdef USE_SHM_COPROCESSING @@ -1744,7 +1755,6 @@ main( int argc, char **argv ) secmem_set_flags( secmem_get_flags() & ~2 ); /* resume warnings */ set_debug(); - g10_opt_homedir = opt.homedir; /* Do these after the switch(), so they can override settings. */ if(opt.pgp2 && (opt.pgp6 || opt.pgp7)) diff --git a/g10/sig-check.c b/g10/sig-check.c index afcce2744..2b3c6472c 100644 --- a/g10/sig-check.c +++ b/g10/sig-check.c @@ -521,8 +521,11 @@ check_key_signature2( KBNODE root, KBNODE node, int *is_selfsig, return rc; if( sig->sig_class == 0x20 ) { /* key revocation */ - /* designated revoker? */ - if(pk->keyid[0]!=sig->keyid[0] || pk->keyid[1]!=sig->keyid[1]) + u32 keyid[2]; + keyid_from_pk( pk, keyid ); + + /* is it a designated revoker? */ + if(keyid[0]!=sig->keyid[0] || keyid[1]!=sig->keyid[1]) rc=check_revocation_keys(pk,sig); else {