summaryrefslogtreecommitdiff
path: root/src/home/homework.h
diff options
context:
space:
mode:
authorLennart Poettering <lennart@poettering.net>2021-10-18 15:31:10 +0200
committerLennart Poettering <lennart@poettering.net>2021-10-18 15:35:41 +0200
commit3361d1ca1b527bc811db543689e77a53f970ca97 (patch)
treee263cf03593649eb5346fe86486ba16a61056988 /src/home/homework.h
parent37a1bf7f76c5a58a3f3dac3241d1ba292d370b42 (diff)
downloadsystemd-3361d1ca1b527bc811db543689e77a53f970ca97.tar.gz
homework: mae sure PasswordCache is really optional
It was supposed to be optional (i.e. there's a reason why we never assert()ed on it), and in many codepaths it is, let's make sure it is everywhere.
Diffstat (limited to 'src/home/homework.h')
-rw-r--r--src/home/homework.h11
1 files changed, 10 insertions, 1 deletions
diff --git a/src/home/homework.h b/src/home/homework.h
index 9331452e3e..5fa4b653e2 100644
--- a/src/home/homework.h
+++ b/src/home/homework.h
@@ -7,6 +7,7 @@
#include "sd-id128.h"
#include "loop-util.h"
+#include "strv.h"
#include "user-record.h"
#include "user-record-util.h"
@@ -39,13 +40,21 @@ typedef struct HomeSetup {
} HomeSetup;
typedef struct PasswordCache {
- /* Decoding passwords from security tokens is expensive and typically requires user interaction, hence cache any we already figured out. */
+ /* Decoding passwords from security tokens is expensive and typically requires user interaction,
+ * hence cache any we already figured out. */
char **pkcs11_passwords;
char **fido2_passwords;
} PasswordCache;
void password_cache_free(PasswordCache *cache);
+static inline bool password_cache_contains(const PasswordCache *cache, const char *p) {
+ if (!cache)
+ return false;
+
+ return strv_contains(cache->pkcs11_passwords, p) || strv_contains(cache->fido2_passwords, p);
+}
+
#define HOME_SETUP_INIT \
{ \
.root_fd = -1, \