aboutsummaryrefslogtreecommitdiffstatshomepage
diff options
context:
space:
mode:
authorHerbert Xu <herbert@gondor.apana.org.au>2025-05-04 21:33:14 +0800
committerHerbert Xu <herbert@gondor.apana.org.au>2025-05-05 18:20:46 +0800
commit2b1a29ce3360570aeff053d1315cd504d94eab31 (patch)
treeaac1ec70b8bf61d92f84a0f38250b0237d70e89f
parentcrypto: zynqmp-sha - Fix partial block implementation (diff)
downloadwireguard-linux-2b1a29ce3360570aeff053d1315cd504d94eab31.tar.xz
wireguard-linux-2b1a29ce3360570aeff053d1315cd504d94eab31.zip
crypto: shash - Cap state size to HASH_MAX_STATESIZE
Now that all shash algorithms have converted over to the generic export format, limit the shash state size to HASH_MAX_STATESIZE. Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
-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)