diff options
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--) |
