diff options
author | Herbert Xu <herbert@gondor.apana.org.au> | 2015-04-23 16:37:46 +0800 |
---|---|---|
committer | Herbert Xu <herbert@gondor.apana.org.au> | 2015-04-26 14:33:16 +0800 |
commit | f01465930dd5bc79cc2581a857f431222a5efe4d (patch) | |
tree | 826c46b05686c457d98dc0183390ab002d3ac7a9 | |
parent | 1c41e4851bbd02a44f4af923da21366ae1090977 (diff) | |
download | linux-crypto-f01465930dd5bc79cc2581a857f431222a5efe4d.tar.gz linux-crypto-f01465930dd5bc79cc2581a857f431222a5efe4d.zip |
crypto: aead - Fix corner case in crypto_lookup_aead
When the user explicitly states that they don't care whether the
algorithm has been tested (type = CRYPTO_ALG_TESTED and mask = 0),
there is a corner case where we may erroneously return ENOENT.
This patch fixes it by correcting the logic in the test.
Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
Diffstat (limited to '')
-rw-r--r-- | crypto/aead.c | 2 |
1 files changed, 1 insertions, 1 deletions
diff --git a/crypto/aead.c b/crypto/aead.c index 22227107..d6ad0c66 100644 --- a/crypto/aead.c +++ b/crypto/aead.c @@ -489,7 +489,7 @@ struct crypto_alg *crypto_lookup_aead(const char *name, u32 type, u32 mask) return alg; if (alg->cra_type == &crypto_aead_type) { - if ((alg->cra_flags ^ type ^ ~mask) & CRYPTO_ALG_TESTED) { + if (~alg->cra_flags & (type ^ ~mask) & CRYPTO_ALG_TESTED) { crypto_mod_put(alg); alg = ERR_PTR(-ENOENT); } |