]> git.ipfire.org Git - thirdparty/curl.git/commitdiff
openssl: fail if more than MAX_ALLOWED_CERT_AMOUNT certs
authorDaniel Stenberg <daniel@haxx.se>
Fri, 17 Oct 2025 08:12:50 +0000 (10:12 +0200)
committerDaniel Stenberg <daniel@haxx.se>
Fri, 17 Oct 2025 11:36:57 +0000 (13:36 +0200)
Detect and prevent abuse or mistakes. Limit set to 100.

Closes #19091

lib/vtls/openssl.c

index 04bab2cbf100d3df5af4c9266642d2de2cd824c9..d51022b664740438d7edb90843be0e4bef389a43 100644 (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)