From: Eric Biggers Date: Mon, 7 Jan 2019 03:07:20 +0000 (-0800) Subject: crypto: shash - require neither or both ->export() and ->import() X-Git-Url: http://git.maquefel.me/?a=commitdiff_plain;h=41a2e94f8157ab52ab36805cfd56cc8dbd08dd39;p=linux.git 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 Signed-off-by: Herbert Xu --- diff --git a/crypto/shash.c b/crypto/shash.c index 40311ccad3fae..2bffdecf1f837 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;