OSDN Git Service

crypto: shash - require neither or both ->export() and ->import()
authorEric Biggers <ebiggers@google.com>
Mon, 7 Jan 2019 03:07:20 +0000 (19:07 -0800)
committerHerbert Xu <herbert@gondor.apana.org.au>
Fri, 18 Jan 2019 10:40:24 +0000 (18:40 +0800)
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>
crypto/shash.c

index 40311cc..2bffdec 100644 (file)
@@ -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;