mirror of
git://git.gnupg.org/gnupg.git
synced 2025-01-03 12:11:33 +01:00
gpg: Fix validity of re-imported keys.
* g10/trustdb.c (tdb_clear_ownertrusts): Detect stale validity records. -- GnuPG-bug-id: 6399 This problem was introduced by an actually very useful patch 2002-12-13 David Shaw <dshaw@jabberwocky.com> [...] * import.c (import_keys_internal): Used here so we don't rebuild the trustdb if it is still clean. (import_one, chk_self_sigs): Only mark trustdb dirty if the key that is being imported has any sigs other than self-sigs. Suggested by Adrian von Bidder. [the last part] The bug exhibited itself only after signing a key, deleting that key and then re-importing the original non-signed key.
This commit is contained in:
parent
0aa32e2429
commit
a02f3cc4e8
@ -730,7 +730,7 @@ tdb_check_or_update (ctrl_t ctrl)
|
|||||||
if (opt.interactive)
|
if (opt.interactive)
|
||||||
update_trustdb (ctrl);
|
update_trustdb (ctrl);
|
||||||
else if (!opt.no_auto_check_trustdb)
|
else if (!opt.no_auto_check_trustdb)
|
||||||
check_trustdb (ctrl);
|
check_trustdb (ctrl);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -983,6 +983,7 @@ update_min_ownertrust (ctrl_t ctrl, u32 *kid, unsigned int new_trust)
|
|||||||
|
|
||||||
/*
|
/*
|
||||||
* Clear the ownertrust and min_ownertrust values.
|
* Clear the ownertrust and min_ownertrust values.
|
||||||
|
* Also schedule a revalidation if a stale validity record exists.
|
||||||
*
|
*
|
||||||
* Return: True if a change actually happened.
|
* Return: True if a change actually happened.
|
||||||
*/
|
*/
|
||||||
@ -1016,6 +1017,26 @@ tdb_clear_ownertrusts (ctrl_t ctrl, PKT_public_key *pk)
|
|||||||
do_sync ();
|
do_sync ();
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
/* Check whether we have a stale RECTYPE_VALID for that key
|
||||||
|
* and if its validity ist set, schedule a revalidation. */
|
||||||
|
ulong recno = rec.r.trust.validlist;
|
||||||
|
while (recno)
|
||||||
|
{
|
||||||
|
read_record (recno, &rec, RECTYPE_VALID);
|
||||||
|
if (rec.r.valid.validity)
|
||||||
|
break;
|
||||||
|
recno = rec.r.valid.next;
|
||||||
|
}
|
||||||
|
if (recno)
|
||||||
|
{
|
||||||
|
if (DBG_TRUST)
|
||||||
|
log_debug ("stale validity value detected"
|
||||||
|
" - scheduling check\n");
|
||||||
|
tdb_revalidation_mark (ctrl);
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
else if (gpg_err_code (err) != GPG_ERR_NOT_FOUND)
|
else if (gpg_err_code (err) != GPG_ERR_NOT_FOUND)
|
||||||
{
|
{
|
||||||
|
Loading…
x
Reference in New Issue
Block a user