openssl: fail if more than MAX_ALLOWED_CERT_AMOUNT certs

Detect and prevent abuse or mistakes. Limit set to 100.

Closes #19091
This commit is contained in:
Daniel Stenberg 2025-10-17 10:12:50 +02:00
parent f221cdeabe
commit 3df71e6dc2
No known key found for this signature in database
GPG Key ID: 5CC908FDB71E12C2

View File

@ -349,6 +349,8 @@ static CURLcode X509V3_ext(struct Curl_easy *data,
return result;
}
#define MAX_ALLOWED_CERT_AMOUNT 100
static CURLcode ossl_certchain(struct Curl_easy *data, SSL *ssl)
{
CURLcode result;
@ -364,6 +366,11 @@ static CURLcode ossl_certchain(struct Curl_easy *data, SSL *ssl)
return CURLE_SSL_CONNECT_ERROR;
numcerts = sk_X509_num(sk);
if(numcerts > MAX_ALLOWED_CERT_AMOUNT) {
failf(data, "%d certificates is more than allowed (%u)", (int)numcerts,
MAX_ALLOWED_CERT_AMOUNT);
return CURLE_SSL_CONNECT_ERROR;
}
result = Curl_ssl_init_certinfo(data, (int)numcerts);
if(result)