summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--fuzz/decoder.c15
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);