aboutsummaryrefslogtreecommitdiffstats
path: root/g10/keydb.c
diff options
context:
space:
mode:
Diffstat (limited to 'g10/keydb.c')
-rw-r--r--g10/keydb.c25
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--)