cryptsetup: ignore invalid password-cache= fully
password-cache= tracks both the cache mode and whether the option was
configured explicitly. The parser set arg_password_cache_set before
validating the value, so an invalid value was logged as ignored but
still blocked the PKCS#11 default no-cache policy.
Only mark password-cache= as configured after accepting read-only or a
valid boolean.
Repro:
build/systemd-cryptsetup attach sdscan /dev/null - \
pkcs11-uri=auto,password-cache=bogus
Before: warned ignored, then failed with the PKCS#11 cache error.
After: warned ignored, then continued to the device check.
Follow-up for: fd8ed7f26b
This commit is contained in:
@@ -311,8 +311,6 @@ static int parse_one_option(const char *option) {
|
||||
SET_FLAG(arg_ask_password_flags, ASK_PASSWORD_SILENT, !r);
|
||||
}
|
||||
} else if ((val = startswith(option, "password-cache="))) {
|
||||
arg_password_cache_set = true;
|
||||
|
||||
if (streq(val, "read-only")) {
|
||||
arg_ask_password_flags |= ASK_PASSWORD_ACCEPT_CACHED;
|
||||
arg_ask_password_flags &= ~ASK_PASSWORD_PUSH_CACHE;
|
||||
@@ -325,6 +323,8 @@ static int parse_one_option(const char *option) {
|
||||
|
||||
SET_FLAG(arg_ask_password_flags, ASK_PASSWORD_ACCEPT_CACHED|ASK_PASSWORD_PUSH_CACHE, r);
|
||||
}
|
||||
|
||||
arg_password_cache_set = true;
|
||||
} else if (STR_IN_SET(option, "allow-discards", "discard"))
|
||||
arg_discards = true;
|
||||
else if (streq(option, "same-cpu-crypt"))
|
||||
|
||||
Reference in New Issue
Block a user