1
0
mirror of git://git.gnupg.org/gnupg.git synced 2025-01-08 12:44:23 +01:00
Werner Koch 456a3a8e93
gpg: Fix trustdb updates without lock held.
* g10/tdbio.c (is_locked): Turn into a counter.
(take_write_lock, release_write_lock): Implement recursive locks.
--

On trustdb creation we have this call sequence:

  init_trustdb                 -> takes lock
    tdbio_set_dbname
      create_version_record
       tdbio_write_record
         put_record_into_cache -> takes lock
         put_record_into_cache -> releases lock
  init_trustdb                 -> releases lock

The second take lock does noting but the first release lock has
already released the lock and the second release lock is a thus a NOP.
This is likely the cause for the corrupted trustdb as reported in

GnuPG-bug-id: 3839
Signed-off-by: Werner Koch <wk@gnupg.org>
2018-03-26 16:57:04 +02:00
..
2018-03-22 15:50:31 +09:00
2018-03-22 15:50:31 +09:00
2017-03-07 20:25:54 +09:00
2017-03-07 20:25:54 +09:00
2017-11-22 20:54:47 +01:00
2017-03-07 20:25:54 +09:00
2017-03-07 20:25:54 +09:00
2015-02-04 09:15:34 +01:00
2018-03-23 09:06:20 +01:00
2018-03-08 14:08:51 +09:00
2015-02-04 09:15:34 +01:00
2017-03-07 20:25:54 +09:00
2017-09-13 09:18:15 +02:00
2017-03-07 20:25:54 +09:00
2017-03-07 20:25:54 +09:00
2017-03-07 20:25:54 +09:00
2018-03-08 14:08:51 +09:00
2018-03-23 09:06:20 +01:00
2018-03-21 19:45:31 +01:00
2017-03-07 20:25:54 +09:00
2017-12-13 11:03:06 +01:00
2017-03-07 20:25:54 +09:00
2017-03-07 20:25:54 +09:00
2017-03-07 20:25:54 +09:00
2017-01-23 19:16:55 +01:00
2017-02-21 13:11:46 -05:00
2017-03-07 20:32:09 +09:00
2017-03-07 20:25:54 +09:00
2017-04-28 10:06:33 +09:00
2017-08-24 20:26:19 +02:00
2016-03-08 14:08:49 +01:00
2017-03-31 20:07:20 +02:00
2017-03-07 20:25:54 +09:00
2016-12-06 12:16:56 +01:00
2017-12-04 19:26:49 +09:00
2017-04-28 10:06:33 +09:00