diff options
author | Niibe Yutaka <[email protected]> | 2016-06-14 23:41:56 +0000 |
---|---|---|
committer | Niibe Yutaka <[email protected]> | 2016-06-14 23:56:12 +0000 |
commit | 00d737e3fde84e7df7ba19080c83237b769cd0d0 (patch) | |
tree | 8b25b104e99ef3e94b6d903daa00fe2001909408 | |
parent | doc: Remove description of --faked-system-time from gpg.texi (diff) | |
download | gnupg-00d737e3fde84e7df7ba19080c83237b769cd0d0.tar.gz gnupg-00d737e3fde84e7df7ba19080c83237b769cd0d0.zip |
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 to reproducible script and patience.
Signed-off-by: NIIBE Yutaka <[email protected]>
(backport from master
commit 35a3ce2acf78a95fecbccfd8db0560cca24232df)
-rw-r--r-- | g10/tdbio.c | 7 |
1 files changed, 5 insertions, 2 deletions
diff --git a/g10/tdbio.c b/g10/tdbio.c index 5c2fdd14d..725c3c2ca 100644 --- a/g10/tdbio.c +++ b/g10/tdbio.c @@ -92,6 +92,7 @@ static int db_fd = -1; static int in_transaction; static void open_db(void); +static void create_hashtable (TRUSTREC *vr, int type); static int take_write_lock (void) @@ -471,6 +472,10 @@ create_version_record (void) rc = tdbio_write_record( &rec ); if( !rc ) tdbio_sync(); + + if (!rc) + create_hashtable (&rec, 0); + return rc; } @@ -763,8 +768,6 @@ get_trusthashrec(void) if( rc ) log_fatal( _("%s: error reading version record: %s\n"), db_name, g10_errstr(rc) ); - if( !vr.r.ver.trusthashtbl ) - create_hashtable( &vr, 0 ); trusthashtbl = vr.r.ver.trusthashtbl; } |