]> git.ipfire.org Git - thirdparty/kernel/linux.git/commitdiff
crypto: shash - Cap state size to HASH_MAX_STATESIZE
authorHerbert Xu <herbert@gondor.apana.org.au>
Sun, 4 May 2025 13:33:14 +0000 (21:33 +0800)
committerHerbert Xu <herbert@gondor.apana.org.au>
Mon, 5 May 2025 10:20:46 +0000 (18:20 +0800)
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>
crypto/shash.c
include/crypto/hash.h

index c4a724e55d7a69a5515a6b6554c3e70974797a40..44a6df3132adb6bfbeb1d5ffb6fac5370c28c57f 100644 (file)
@@ -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;
 }
index c2497c300a28846e120839e2b62734f4664117ad..e0321b5ec363ed58b523ab7bb8066f759536b456 100644 (file)
@@ -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)