]> git.baikalelectronics.ru Git - kernel.git/commit
KEYS: be careful with error codes in public_key_verify_signature()
authorEric Biggers <ebiggers@google.com>
Fri, 8 Dec 2017 15:13:29 +0000 (15:13 +0000)
committerDavid Howells <dhowells@redhat.com>
Fri, 8 Dec 2017 15:13:29 +0000 (15:13 +0000)
commitc766fd5b01818ffd6fd3ceb84467853eb4821b6f
tree07ca4c806753963651a86081f8dfbbce26e90c19
parente183ca61ac0b95d0a262956e0ef7c88a513c9f74
KEYS: be careful with error codes in public_key_verify_signature()

In public_key_verify_signature(), if akcipher_request_alloc() fails, we
return -ENOMEM.  But that error code was set 25 lines above, and by
accident someone could easily insert new code in between that assigns to
'ret', which would introduce a signature verification bypass.  Make the
code clearer by moving the -ENOMEM down to where it is used.

Additionally, the callers of public_key_verify_signature() only consider
a negative return value to be an error.  This means that if any positive
return value is accidentally introduced deeper in the call stack (e.g.
'return EBADMSG' instead of 'return -EBADMSG' somewhere in RSA),
signature verification will be bypassed.  Make things more robust by
having public_key_verify_signature() warn about positive errors and
translate them into -EINVAL.

Signed-off-by: Eric Biggers <ebiggers@google.com>
Signed-off-by: David Howells <dhowells@redhat.com>
crypto/asymmetric_keys/public_key.c