diff options
-rw-r--r-- | fuzz/decoder.c | 15 |
1 files changed, 12 insertions, 3 deletions
diff --git a/fuzz/decoder.c b/fuzz/decoder.c index 1a6558dbb3..c7b6d02f73 100644 --- a/fuzz/decoder.c +++ b/fuzz/decoder.c @@ -64,10 +64,19 @@ int FuzzerTestOneInput(const uint8_t *buf, size_t len) EVP_PKEY_free(pkey2); ctx = EVP_PKEY_CTX_new(pkey, NULL); - EVP_PKEY_param_check(ctx); + /* + * Param check will take too long time on large DH parameters. + * Skip it. + */ + if (!EVP_PKEY_is_a(pkey, "DH") || EVP_PKEY_get_bits(pkey) <= 8192) + EVP_PKEY_param_check(ctx); + EVP_PKEY_public_check(ctx); - EVP_PKEY_private_check(ctx); - EVP_PKEY_pairwise_check(ctx); + /* Private and pairwise checks are unbounded, skip for large keys. */ + if (EVP_PKEY_get_bits(pkey) <= 16384) { + EVP_PKEY_private_check(ctx); + EVP_PKEY_pairwise_check(ctx); + } OPENSSL_assert(ctx != NULL); EVP_PKEY_CTX_free(ctx); EVP_PKEY_free(pkey); |