mirror of
https://gitlab.com/cryptsetup/cryptsetup.git
synced 2025-12-17 22:00:07 +01:00
Always print error message for invalid keyring definition.
Many cases quietly returned error without any error message.
This commit is contained in:
@@ -1714,8 +1714,8 @@ static int parse_vk_and_keyring_description(
|
|||||||
struct crypt_device *cd,
|
struct crypt_device *cd,
|
||||||
char *keyring_key_description)
|
char *keyring_key_description)
|
||||||
{
|
{
|
||||||
int r;
|
int r = -EINVAL;
|
||||||
char *endp, *sep, *keyring_part, *key_part, *type_part = NULL;
|
char *endp, *sep, *keyring_part = NULL, *key_part, *type_part = NULL;
|
||||||
|
|
||||||
if (!cd || !keyring_key_description)
|
if (!cd || !keyring_key_description)
|
||||||
return -EINVAL;
|
return -EINVAL;
|
||||||
@@ -1723,7 +1723,7 @@ static int parse_vk_and_keyring_description(
|
|||||||
/* "::" is separator between keyring specification a key description */
|
/* "::" is separator between keyring specification a key description */
|
||||||
key_part = strstr(keyring_key_description, "::");
|
key_part = strstr(keyring_key_description, "::");
|
||||||
if (!key_part)
|
if (!key_part)
|
||||||
return -EINVAL;
|
goto out;
|
||||||
|
|
||||||
*key_part = '\0';
|
*key_part = '\0';
|
||||||
key_part = key_part + 2;
|
key_part = key_part + 2;
|
||||||
@@ -1732,7 +1732,7 @@ static int parse_vk_and_keyring_description(
|
|||||||
type_part = key_part + 1;
|
type_part = key_part + 1;
|
||||||
sep = strstr(type_part, ":");
|
sep = strstr(type_part, ":");
|
||||||
if (!sep)
|
if (!sep)
|
||||||
return -EINVAL;
|
goto out;
|
||||||
*sep = '\0';
|
*sep = '\0';
|
||||||
|
|
||||||
key_part = sep + 1;
|
key_part = sep + 1;
|
||||||
@@ -1740,10 +1740,8 @@ static int parse_vk_and_keyring_description(
|
|||||||
|
|
||||||
if (*keyring_key_description == '%') {
|
if (*keyring_key_description == '%') {
|
||||||
keyring_key_description = strstr(keyring_key_description, ":");
|
keyring_key_description = strstr(keyring_key_description, ":");
|
||||||
if (!keyring_key_description) {
|
if (!keyring_key_description)
|
||||||
log_err(_("Invalid --link-vk-to-keyring value."));
|
goto out;
|
||||||
return -EINVAL;
|
|
||||||
}
|
|
||||||
log_verbose(_("Type specification in --link-vk-to-keyring keyring specification is ignored."));
|
log_verbose(_("Type specification in --link-vk-to-keyring keyring specification is ignored."));
|
||||||
keyring_key_description++;
|
keyring_key_description++;
|
||||||
}
|
}
|
||||||
@@ -1751,20 +1749,22 @@ static int parse_vk_and_keyring_description(
|
|||||||
(void)strtol(keyring_key_description, &endp, 0);
|
(void)strtol(keyring_key_description, &endp, 0);
|
||||||
|
|
||||||
r = 0;
|
r = 0;
|
||||||
if (*keyring_key_description == '@' || !*endp) {
|
if (*keyring_key_description == '@' || !*endp)
|
||||||
keyring_part = strdup(keyring_key_description);
|
keyring_part = strdup(keyring_key_description);
|
||||||
if (!keyring_part)
|
else
|
||||||
r = -ENOMEM;
|
|
||||||
} else
|
|
||||||
r = asprintf(&keyring_part, "%%:%s", keyring_key_description);
|
r = asprintf(&keyring_part, "%%:%s", keyring_key_description);
|
||||||
|
|
||||||
if (r < 0)
|
if (!keyring_part || r < 0) {
|
||||||
return -EINVAL;
|
r = -ENOMEM;
|
||||||
|
goto out;
|
||||||
|
}
|
||||||
|
|
||||||
r = crypt_set_keyring_to_link(cd, key_part, type_part, keyring_part);
|
r = crypt_set_keyring_to_link(cd, key_part, type_part, keyring_part);
|
||||||
|
out:
|
||||||
|
if (r == -EINVAL)
|
||||||
|
log_err(_("Invalid --link-vk-to-keyring value."));
|
||||||
|
|
||||||
free(keyring_part);
|
free(keyring_part);
|
||||||
|
|
||||||
return r;
|
return r;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user