summaryrefslogtreecommitdiff
path: root/src/shared/libfido2-util.c
diff options
context:
space:
mode:
authorpedro martelletto <pedro@yubico.com>2021-09-08 10:42:56 +0200
committerLuca Boccassi <luca.boccassi@gmail.com>2021-09-08 13:42:07 +0100
commitb6aa89b0a399992c8ea762e6ec4f30cff90618f2 (patch)
tree1fdea13727c0bcaee5fc871be5330a7c56d7e0d8 /src/shared/libfido2-util.c
parentafd481465140a0a1ad7bb95eee968dea5118f990 (diff)
downloadsystemd-b6aa89b0a399992c8ea762e6ec4f30cff90618f2.tar.gz
explicitly close FIDO2 devices
FIDO2 device access is serialised by libfido2 using flock(). Therefore, make sure to close a FIDO2 device once we are done with it, or we risk opening it again at a later point and deadlocking. Fixes #20664.
Diffstat (limited to 'src/shared/libfido2-util.c')
-rw-r--r--src/shared/libfido2-util.c2
1 files changed, 2 insertions, 0 deletions
diff --git a/src/shared/libfido2-util.c b/src/shared/libfido2-util.c
index 12c644dcfc..6d18178b68 100644
--- a/src/shared/libfido2-util.c
+++ b/src/shared/libfido2-util.c
@@ -58,6 +58,7 @@ bool (*sym_fido_dev_is_fido2)(const fido_dev_t *) = NULL;
int (*sym_fido_dev_make_cred)(fido_dev_t *, fido_cred_t *, const char *) = NULL;
fido_dev_t* (*sym_fido_dev_new)(void) = NULL;
int (*sym_fido_dev_open)(fido_dev_t *, const char *) = NULL;
+int (*sym_fido_dev_close)(fido_dev_t *) = NULL;
const char* (*sym_fido_strerr)(int) = NULL;
int dlopen_libfido2(void) {
@@ -106,6 +107,7 @@ int dlopen_libfido2(void) {
DLSYM_ARG(fido_dev_make_cred),
DLSYM_ARG(fido_dev_new),
DLSYM_ARG(fido_dev_open),
+ DLSYM_ARG(fido_dev_close),
DLSYM_ARG(fido_strerr));
}