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/keyring.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/keyring.c')
| -rw-r--r-- | g10/keyring.c | 10 |
1 files changed, 9 insertions, 1 deletions
diff --git a/g10/keyring.c b/g10/keyring.c index fd0b83521..f52bb7aea 100644 --- a/g10/keyring.c +++ b/g10/keyring.c @@ -253,6 +253,14 @@ keyring_new (void *token) } void +keyring_fp_close (KEYRING_HANDLE hd) +{ + if (!hd) + return; + iobuf_close (hd->current.iobuf); +} + +void keyring_release (KEYRING_HANDLE hd) { if (!hd) @@ -261,7 +269,6 @@ keyring_release (KEYRING_HANDLE hd) active_handles--; xfree (hd->word_match.name); xfree (hd->word_match.pattern); - iobuf_close (hd->current.iobuf); xfree (hd); } @@ -1594,6 +1601,7 @@ keyring_rebuild_cache (ctrl_t ctrl, void *token, int noisy) xfree (tmpfilename); xfree (bakfilename); release_kbnode (keyblock); + keyring_fp_close (hd); keyring_lock (hd, 0); keyring_release (hd); return rc; |
