mirror of
https://github.com/AuxXxilium/linux_dsm_epyc7002.git
synced 2024-11-24 15:40:56 +07:00
KEYS: special dot prefixed keyring name bug fix
Dot prefixed keyring names are supposed to be reserved for the kernel, but add_key() calls key_get_type_from_user(), which incorrectly verifies the 'type' field, not the 'description' field. This patch verifies the 'description' field isn't dot prefixed, when creating a new keyring, and removes the dot prefix test in key_get_type_from_user(). Changelog v6: - whitespace and other cleanup Changelog v5: - Only prevent userspace from creating a dot prefixed keyring, not regular keys - Dmitry Reported-by: Dmitry Kasatkin <d.kasatkin@samsung.com> Signed-off-by: Mimi Zohar <zohar@linux.vnet.ibm.com> Acked-by: David Howells <dhowells@redhat.com>
This commit is contained in:
parent
32c2e6752f
commit
a4e3b8d79a
@ -37,8 +37,6 @@ static int key_get_type_from_user(char *type,
|
|||||||
return ret;
|
return ret;
|
||||||
if (ret == 0 || ret >= len)
|
if (ret == 0 || ret >= len)
|
||||||
return -EINVAL;
|
return -EINVAL;
|
||||||
if (type[0] == '.')
|
|
||||||
return -EPERM;
|
|
||||||
type[len - 1] = '\0';
|
type[len - 1] = '\0';
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
@ -86,6 +84,10 @@ SYSCALL_DEFINE5(add_key, const char __user *, _type,
|
|||||||
if (!*description) {
|
if (!*description) {
|
||||||
kfree(description);
|
kfree(description);
|
||||||
description = NULL;
|
description = NULL;
|
||||||
|
} else if ((description[0] == '.') &&
|
||||||
|
(strncmp(type, "keyring", 7) == 0)) {
|
||||||
|
ret = -EPERM;
|
||||||
|
goto error2;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user