crypto: skcipher - Fix corner case in crypto_lookup_skcipher
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>
This commit is contained in:
parent
bd4a7c69aa
commit
2673953520
@ -636,7 +636,7 @@ struct crypto_alg *crypto_lookup_skcipher(const char *name, u32 type, u32 mask)
|
|||||||
|
|
||||||
if ((alg->cra_flags & CRYPTO_ALG_TYPE_MASK) ==
|
if ((alg->cra_flags & CRYPTO_ALG_TYPE_MASK) ==
|
||||||
CRYPTO_ALG_TYPE_GIVCIPHER) {
|
CRYPTO_ALG_TYPE_GIVCIPHER) {
|
||||||
if ((alg->cra_flags ^ type ^ ~mask) & CRYPTO_ALG_TESTED) {
|
if (~alg->cra_flags & (type ^ ~mask) & CRYPTO_ALG_TESTED) {
|
||||||
crypto_mod_put(alg);
|
crypto_mod_put(alg);
|
||||||
alg = ERR_PTR(-ENOENT);
|
alg = ERR_PTR(-ENOENT);
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user