]> git.ipfire.org Git - thirdparty/curl.git/commitdiff
openssl: better return code checks when logging cert data
authorDaniel Stenberg <daniel@haxx.se>
Fri, 17 Oct 2025 09:18:49 +0000 (11:18 +0200)
committerDaniel Stenberg <daniel@haxx.se>
Fri, 17 Oct 2025 10:41:04 +0000 (12:41 +0200)
Pointed out by ZeroPath

Closes #19094

lib/vtls/openssl.c

index 533acdaf8db719d3e8293bf23509f99761dd3a65..04bab2cbf100d3df5af4c9266642d2de2cd824c9 100644 (file)
@@ -4845,6 +4845,8 @@ static void infof_certstack(struct Curl_easy *data, const SSL *ssl)
     certstack = SSL_get_peer_cert_chain(ssl);
   else
     certstack = SSL_get0_verified_chain(ssl);
+  if(!certstack)
+    return;
   num_cert_levels = sk_X509_num(certstack);
 
   for(cert_level = 0; cert_level < num_cert_levels; cert_level++) {
@@ -4860,12 +4862,17 @@ static void infof_certstack(struct Curl_easy *data, const SSL *ssl)
     const char *type_name;
 
     current_cert = sk_X509_value(certstack, cert_level);
+    if(!current_cert)
+      continue;
+
+    current_pkey = X509_get0_pubkey(current_cert);
+    if(!current_pkey)
+      continue;
 
     X509_get0_signature(NULL, &palg_cert, current_cert);
     X509_ALGOR_get0(&paobj_cert, NULL, NULL, palg_cert);
     OBJ_obj2txt(cert_algorithm, sizeof(cert_algorithm), paobj_cert, 0);
 
-    current_pkey = X509_get0_pubkey(current_cert);
     key_bits = EVP_PKEY_bits(current_pkey);
 #ifndef HAVE_OPENSSL3
 #define EVP_PKEY_get_security_bits EVP_PKEY_security_bits