|
@@ -57,9 +57,14 @@ static int crypto_check_alg(struct crypto_alg *alg)
|
|
if (alg->cra_alignmask & (alg->cra_alignmask + 1))
|
|
if (alg->cra_alignmask & (alg->cra_alignmask + 1))
|
|
return -EINVAL;
|
|
return -EINVAL;
|
|
|
|
|
|
- if (alg->cra_blocksize > PAGE_SIZE / 8)
|
|
|
|
|
|
+ /* General maximums for all algs. */
|
|
|
|
+ if (alg->cra_alignmask > MAX_ALGAPI_ALIGNMASK)
|
|
return -EINVAL;
|
|
return -EINVAL;
|
|
|
|
|
|
|
|
+ if (alg->cra_blocksize > MAX_ALGAPI_BLOCKSIZE)
|
|
|
|
+ return -EINVAL;
|
|
|
|
+
|
|
|
|
+ /* Lower maximums for specific alg types. */
|
|
if (!alg->cra_type && (alg->cra_flags & CRYPTO_ALG_TYPE_MASK) ==
|
|
if (!alg->cra_type && (alg->cra_flags & CRYPTO_ALG_TYPE_MASK) ==
|
|
CRYPTO_ALG_TYPE_CIPHER) {
|
|
CRYPTO_ALG_TYPE_CIPHER) {
|
|
if (alg->cra_alignmask > MAX_CIPHER_ALIGNMASK)
|
|
if (alg->cra_alignmask > MAX_CIPHER_ALIGNMASK)
|