mirror of
git://git.gnupg.org/gnupg.git
synced 2025-02-01 16:33:02 +01:00
g10: Fix another race condition for trustdb access.
* g10/tdbio.c (create_version_record): Call create_hashtable to always make hashtable, together with the version record. (get_trusthashrec): Remove call to create_hashtable. -- GnuPG-bug-id: 1675 Thanks to Scott Moser for a reproducible script and patience. Signed-off-by: NIIBE Yutaka <gniibe@fsij.org>
This commit is contained in:
parent
b56aebe766
commit
35a3ce2acf
@ -119,6 +119,7 @@ static int in_transaction;
|
||||
|
||||
|
||||
static void open_db (void);
|
||||
static void create_hashtable (TRUSTREC *vr, int type);
|
||||
|
||||
|
||||
|
||||
@ -582,8 +583,13 @@ create_version_record (void)
|
||||
rec.rectype = RECTYPE_VER;
|
||||
rec.recnum = 0;
|
||||
rc = tdbio_write_record (&rec);
|
||||
|
||||
if (!rc)
|
||||
tdbio_sync ();
|
||||
|
||||
if (!rc)
|
||||
create_hashtable (&rec, 0);
|
||||
|
||||
return rc;
|
||||
}
|
||||
|
||||
@ -957,8 +963,6 @@ get_trusthashrec(void)
|
||||
if (rc)
|
||||
log_fatal (_("%s: error reading version record: %s\n"),
|
||||
db_name, gpg_strerror (rc) );
|
||||
if (!vr.r.ver.trusthashtbl)
|
||||
create_hashtable (&vr, 0);
|
||||
|
||||
trusthashtbl = vr.r.ver.trusthashtbl;
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user