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 /sm/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 'sm/keydb.c')
| -rw-r--r-- | sm/keydb.c | 26 |
1 files changed, 20 insertions, 6 deletions
diff --git a/sm/keydb.c b/sm/keydb.c index 68325113a..3048de44c 100644 --- a/sm/keydb.c +++ b/sm/keydb.c @@ -808,9 +808,6 @@ lock_all (KEYDB_HANDLE hd) { int i, rc = 0; - if (hd->use_keyboxd) - return 0; - if (hd->keep_lock) return 0; @@ -853,14 +850,31 @@ 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_KEYBOX: + keybox_fp_close (hd->active[i].u.kr); + break; + } + } +} + +static void unlock_all (KEYDB_HANDLE hd) { int i; - if (hd->use_keyboxd) - return; + do_fp_close (hd); - if (!hd->locked || hd->keep_lock) + if (!hd->locked) return; for (i=hd->used-1; i >= 0; i--) |
