aboutsummaryrefslogtreecommitdiffstatshomepage
diff options
context:
space:
mode:
-rw-r--r--crypto/shash.c2
-rw-r--r--include/crypto/hash.h5
2 files changed, 6 insertions, 1 deletions
diff --git a/crypto/shash.c b/crypto/shash.c
index c4a724e55d7a..44a6df3132ad 100644
--- a/crypto/shash.c
+++ b/crypto/shash.c
@@ -479,6 +479,8 @@ static int shash_prepare_alg(struct shash_alg *alg)
if (alg->descsize > HASH_MAX_DESCSIZE)
return -EINVAL;
+ if (alg->statesize > HASH_MAX_STATESIZE)
+ return -EINVAL;
return 0;
}
diff --git a/include/crypto/hash.h b/include/crypto/hash.h
index c2497c300a28..e0321b5ec363 100644
--- a/include/crypto/hash.h
+++ b/include/crypto/hash.h
@@ -167,8 +167,11 @@ struct shash_desc {
#define HASH_MAX_DIGESTSIZE 64
+/* Worst case is sha3-224. */
+#define HASH_MAX_STATESIZE 200 + 144 + 1
+
/*
- * Worst case is hmac(sha-224-s390). Its context is a nested 'shash_desc'
+ * Worst case is hmac(sha3-224-s390). Its context is a nested 'shash_desc'
* containing a 'struct s390_sha_ctx'.
*/
#define HASH_MAX_DESCSIZE (sizeof(struct shash_desc) + 360)