diff options
Diffstat (limited to 'g10/import.c')
-rw-r--r-- | g10/import.c | 5 |
1 files changed, 5 insertions, 0 deletions
diff --git a/g10/import.c b/g10/import.c index 12a2a099d..63d4bf9b2 100644 --- a/g10/import.c +++ b/g10/import.c @@ -247,6 +247,7 @@ import_one( const char *fname, KBNODE keyblock ) u32 keyid[2]; int rc = 0; int new_key = 0; + int mod_key = 0; /* get the key and print some info about it */ node = find_kbnode( keyblock, PKT_PUBLIC_KEY ); @@ -284,6 +285,7 @@ import_one( const char *fname, KBNODE keyblock ) return 0; } + /* do we have this key already in one of our pubrings ? */ pk_orig = m_alloc_clear( sizeof *pk_orig ); rc = get_pubkey( pk_orig, keyid ); @@ -350,6 +352,7 @@ import_one( const char *fname, KBNODE keyblock ) if( rc ) goto leave; if( n_uids || n_sigs || n_subk ) { + mod_key = 1; /* keyblock_orig has been updated; write */ if( opt.verbose > 1 ) log_info_f(keyblock_resource_name(&kbpos), @@ -394,6 +397,8 @@ import_one( const char *fname, KBNODE keyblock ) log_error("key %08lX: trustdb insert failed: %s\n", (ulong)keyid[1], g10_errstr(rc) ); } + else if( mod_key ) + rc = update_trustdb( new_key? pk: pk_orig); else rc = clear_trust_checked_flag( new_key? pk : pk_orig ); } |