diff options
author | Eric Biggers <ebiggers@google.com> | 2018-02-22 15:38:34 +0100 |
---|---|---|
committer | David Howells <dhowells@redhat.com> | 2018-02-22 15:38:34 +0100 |
commit | 4b34968e77ad09628cfb3c4a7daf2adc2cefc6e8 (patch) | |
tree | c10c13fc4f09f9a6705d969f6b268b060e885b3b /security | |
parent | X.509: fix BUG_ON() when hash algorithm is unsupported (diff) | |
download | linux-4b34968e77ad09628cfb3c4a7daf2adc2cefc6e8.tar.xz linux-4b34968e77ad09628cfb3c4a7daf2adc2cefc6e8.zip |
X.509: fix NULL dereference when restricting key with unsupported_sig
The asymmetric key type allows an X.509 certificate to be added even if
its signature's hash algorithm is not available in the crypto API. In
that case 'payload.data[asym_auth]' will be NULL. But the key
restriction code failed to check for this case before trying to use the
signature, resulting in a NULL pointer dereference in
key_or_keyring_common() or in restrict_link_by_signature().
Fix this by returning -ENOPKG when the signature is unsupported.
Reproducer when all the CONFIG_CRYPTO_SHA512* options are disabled and
keyctl has support for the 'restrict_keyring' command:
keyctl new_session
keyctl restrict_keyring @s asymmetric builtin_trusted
openssl req -new -sha512 -x509 -batch -nodes -outform der \
| keyctl padd asymmetric desc @s
Fixes: a511e1af8b12 ("KEYS: Move the point of trust determination to __key_link()")
Cc: <stable@vger.kernel.org> # v4.7+
Signed-off-by: Eric Biggers <ebiggers@google.com>
Signed-off-by: David Howells <dhowells@redhat.com>
Diffstat (limited to 'security')
0 files changed, 0 insertions, 0 deletions