diff options
author | Eric Biggers <ebiggers@google.com> | 2019-01-07 04:07:20 +0100 |
---|---|---|
committer | Herbert Xu <herbert@gondor.apana.org.au> | 2019-01-18 11:40:24 +0100 |
commit | 41a2e94f8157ab52ab36805cfd56cc8dbd08dd39 (patch) | |
tree | 7eabd787fabeef3ef189b6ff28a8787ef082ff91 /crypto/shash.c | |
parent | crypto: aead - set CRYPTO_TFM_NEED_KEY if ->setkey() fails (diff) | |
download | linux-41a2e94f8157ab52ab36805cfd56cc8dbd08dd39.tar.xz linux-41a2e94f8157ab52ab36805cfd56cc8dbd08dd39.zip |
crypto: shash - require neither or both ->export() and ->import()
Prevent registering shash algorithms that implement ->export() but not
->import(), or ->import() but not ->export(). Such cases don't make
sense and could confuse the check that shash_prepare_alg() does for just
->export().
I don't believe this affects any existing algorithms; this is just
preventing future mistakes.
Signed-off-by: Eric Biggers <ebiggers@google.com>
Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
Diffstat (limited to 'crypto/shash.c')
-rw-r--r-- | crypto/shash.c | 3 |
1 files changed, 3 insertions, 0 deletions
diff --git a/crypto/shash.c b/crypto/shash.c index 40311ccad3fa..2bffdecf1f83 100644 --- a/crypto/shash.c +++ b/crypto/shash.c @@ -472,6 +472,9 @@ static int shash_prepare_alg(struct shash_alg *alg) alg->statesize > HASH_MAX_STATESIZE) return -EINVAL; + if ((alg->export && !alg->import) || (alg->import && !alg->export)) + return -EINVAL; + base->cra_type = &crypto_shash_type; base->cra_flags &= ~CRYPTO_ALG_TYPE_MASK; base->cra_flags |= CRYPTO_ALG_TYPE_SHASH; |