summaryrefslogtreecommitdiff
path: root/crypto
diff options
context:
space:
mode:
authorRussell King <rmk+kernel@arm.linux.org.uk>2015-10-09 20:43:33 +0100
committerHerbert Xu <herbert@gondor.apana.org.au>2015-10-13 22:28:10 +0800
commit68418efba748967f029918a09f01693be1622480 (patch)
treed1078b77f66baad07699bb80a4dfad7a1042a97e /crypto
parent6fa96d876e74e903518d5989a2aa2f5af90294a1 (diff)
downloadlinux-crypto-68418efba748967f029918a09f01693be1622480.tar.gz
linux-crypto-68418efba748967f029918a09f01693be1622480.zip
crypto: ahash - ensure statesize is non-zero
Unlike shash algorithms, ahash drivers must implement export and import as their descriptors may contain hardware state and cannot be exported as is. Unfortunately some ahash drivers did not provide them and end up causing crashes with algif_hash. This patch adds a check to prevent these drivers from registering ahash algorithms until they are fixed. Cc: stable@vger.kernel.org Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk> Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
Diffstat (limited to 'crypto')
-rw-r--r--crypto/ahash.c3
1 files changed, 2 insertions, 1 deletions
diff --git a/crypto/ahash.c b/crypto/ahash.c
index 8acb8860..9c1dc8d6 100644
--- a/crypto/ahash.c
+++ b/crypto/ahash.c
@@ -544,7 +544,8 @@ static int ahash_prepare_alg(struct ahash_alg *alg)
struct crypto_alg *base = &alg->halg.base;
if (alg->halg.digestsize > PAGE_SIZE / 8 ||
- alg->halg.statesize > PAGE_SIZE / 8)
+ alg->halg.statesize > PAGE_SIZE / 8 ||
+ alg->halg.statesize == 0)
return -EINVAL;
base->cra_type = &crypto_ahash_type;