diff options
| author | NIIBE Yutaka <[email protected]> | 2025-10-22 01:52:52 +0000 |
|---|---|---|
| committer | NIIBE Yutaka <[email protected]> | 2025-10-22 01:52:52 +0000 |
| commit | 4a2dda2002c42fa541dacd142093c89476df606d (patch) | |
| tree | 2d16bc08c7bf4135536e5ae1fb8c33bb5fa66b94 /g10/keydb.c | |
| parent | gpg,gpgsm: No more internal-lock when KEEP_LOCK is enabled. (diff) | |
| download | gnupg-4a2dda2002c42fa541dacd142093c89476df606d.tar.gz gnupg-4a2dda2002c42fa541dacd142093c89476df606d.zip | |
kbx,gpg,gpgsm: Add FP-close method for keydb to close before unlock.
* kbx/keybox.h (keybox_fp_close): New.
* kbx/keybox-init.c (keybox_fp_close): New.
(keybox_release): Don't close FP here.
* kbx/keybox-update.c (keybox_compress_when_no_other_users): Use
keybox_fp_close.
* kbx/backend-kbx.c (be_kbx_release_kbx_hd): Follow the change.
* g10/keyring.h (keyring_fp_close): New.
* g10/keyring.c (keyring_fp_close): New.
(keyring_release): Don't close IOBUF here.
(keyring_rebuild_cache): Use keyring_fp_close.
* g10/keydb.c (do_fp_close): New.
(unlock_all): Close FP before unlocking.
* sm/keydb.c (do_fp_close): New.
(unlock_all): Close FP before unlocking.
--
GnuPG-bug-id: 7855
Signed-off-by: NIIBE Yutaka <[email protected]>
Diffstat (limited to 'g10/keydb.c')
| -rw-r--r-- | g10/keydb.c | 25 |
1 files changed, 24 insertions, 1 deletions
diff --git a/g10/keydb.c b/g10/keydb.c index 06c78f048..cdad8a450 100644 --- a/g10/keydb.c +++ b/g10/keydb.c @@ -1059,11 +1059,34 @@ lock_all (KEYDB_HANDLE hd) static void +do_fp_close (KEYDB_HANDLE hd) +{ + int i; + + for (i=0; i < hd->used; i++) + { + switch (hd->active[i].type) + { + case KEYDB_RESOURCE_TYPE_NONE: + break; + case KEYDB_RESOURCE_TYPE_KEYRING: + keyring_fp_close (hd->active[i].u.kr); + break; + case KEYDB_RESOURCE_TYPE_KEYBOX: + keybox_fp_close (hd->active[i].u.kb); + break; + } + } +} + +static void unlock_all (KEYDB_HANDLE hd) { int i; - if (!hd->locked || hd->keep_lock) + do_fp_close (hd); + + if (!hd->locked) return; for (i=hd->used-1; i >= 0; i--) |
