From 2932b7f56f4658d7371719fe68648d7504a3af28 Mon Sep 17 00:00:00 2001 From: Viktor Szakats Date: Tue, 2 Jun 2026 15:33:14 +0200 Subject: [PATCH] gtls: minor fixes and improvements - fix GnuTLS function name reference in `Curl_gtls_shared_creds_create()` error message. Spotted by GitHub Code Quality. - unfold a line. - in `Curl_gtls_verifyserver()`: - report the failure of `gnutls_x509_crt_import()`. Spotted by GitHub Code Quality. - fix a minor inconsistency in error strings. - drop redundant NULL checks for `config->issuercert`. Closes #21850 --- lib/vtls/gtls.c | 21 +++++++++++++-------- 1 file changed, 13 insertions(+), 8 deletions(-) diff --git a/lib/vtls/gtls.c b/lib/vtls/gtls.c index 3019143ad6..6fda7590ce 100644 --- a/lib/vtls/gtls.c +++ b/lib/vtls/gtls.c @@ -409,7 +409,8 @@ CURLcode Curl_gtls_shared_creds_create(struct Curl_easy *data, rc = gnutls_certificate_allocate_credentials(&shared->creds); if(rc != GNUTLS_E_SUCCESS) { - failf(data, "gnutls_cert_all_cred() failed: %s", gnutls_strerror(rc)); + failf(data, "gnutls_certificate_allocate_credentials() failed: %s", + gnutls_strerror(rc)); curlx_free(shared); return CURLE_SSL_CONNECT_ERROR; } @@ -1464,8 +1465,7 @@ static CURLcode gtls_verify_ocsp_status(struct Curl_easy *data, goto out; } - if(!gnutls_credentials_get(session, GNUTLS_CRD_CERTIFICATE, - (void **)&creds)) + if(!gnutls_credentials_get(session, GNUTLS_CRD_CERTIFICATE, (void **)&creds)) gnutls_certificate_get_trust_list(creds, &tlist); if(!tlist) { failf(data, "OCSP response signature verification failed"); @@ -1819,17 +1819,22 @@ CURLcode Curl_gtls_verifyserver(struct Curl_cfilter *cf, } issuerp = load_file(config->issuercert); rc = gnutls_x509_crt_import(x509_issuer, &issuerp, GNUTLS_X509_FMT_PEM); - if(!rc) - rc = (int)gnutls_x509_crt_check_issuer(x509_cert, x509_issuer); unload_file(issuerp); + if(rc) { + failf(data, "failed to import issuer certificate (%s) (Issuer Cert: %s)", + gnutls_strerror(rc), config->issuercert); + result = CURLE_SSL_ISSUER_ERROR; + goto out; + } + rc = (int)gnutls_x509_crt_check_issuer(x509_cert, x509_issuer); if(rc <= 0) { - failf(data, "server certificate issuer check failed (IssuerCert: %s)", - config->issuercert ? config->issuercert : "none"); + failf(data, "server certificate issuer check failed (Issuer Cert: %s)", + config->issuercert); result = CURLE_SSL_ISSUER_ERROR; goto out; } infof(data, " SSL certificate issuer check OK (Issuer Cert: %s)", - config->issuercert ? config->issuercert : "none"); + config->issuercert); } /* This function checks if the given certificate's subject matches the