← Commit list

8e6149598b

Viktor Szakats
Viktor Szakats
2025-11-06
SUCCESS Duration: 144s

Subject

gnutls: report accurate error when TLS-SRP is not built-in

Binary

No binary (build failed)

Architecture & Compiler Flags

Architecture: x86_64-linux-gnu Compiler: gcc (Ubuntu 11.4.0-1ubuntu1~22.04.3) 11.4.0

—

Build Log

(log yok)

Commit Diff GitHub →

CMakeLists.txt+2 -0
@@ -934,6 +934,8 @@ if(CURL_USE_GNUTLS)
list(APPEND CMAKE_REQUIRED_INCLUDES "${GNUTLS_INCLUDE_DIRS}")
list(APPEND CMAKE_REQUIRED_LIBRARIES "${GNUTLS_LIBRARIES}")
curl_required_libpaths("${GNUTLS_LIBRARY_DIRS}")
+ # In GnuTLS 3.8.0 (2023-02-10) and upper, this check always succeeds.
+ # Detecting actual TLS-SRP support needs poking the API at runtime.
check_symbol_exists("gnutls_srp_verifier" "gnutls/gnutls.h" HAVE_GNUTLS_SRP)
cmake_pop_check_state()
endif()
lib/vtls/gtls.c+6 -1
@@ -877,7 +877,12 @@ static CURLcode gtls_client_init(struct Curl_cfilter *cf,
infof(data, "Using TLS-SRP username: %s", config->username);
rc = gnutls_srp_allocate_client_credentials(&gtls->srp_client_cred);
- if(rc != GNUTLS_E_SUCCESS) {
+ if(rc == GNUTLS_E_UNIMPLEMENTED_FEATURE) {
+ failf(data, "GnuTLS: TLS-SRP support not built in: %s",
+ gnutls_strerror(rc));
+ return CURLE_NOT_BUILT_IN;
+ }
+ else if(rc != GNUTLS_E_SUCCESS) {
failf(data, "gnutls_srp_allocate_client_cred() failed: %s",
gnutls_strerror(rc));
return CURLE_OUT_OF_MEMORY;
m4/curl-gnutls.m4+3 -0
@@ -156,6 +156,9 @@ if test "$GNUTLS_ENABLED" = "1"; then
dnl ---
dnl We require GnuTLS with SRP support.
+ dnl
+ dnl In GnuTLS 3.8.0 (2023-02-10) and upper, this check always succeeds.
+ dnl Detecting actual TLS-SRP support needs poking the API at runtime.
dnl ---
AC_CHECK_LIB(gnutls, gnutls_srp_verifier,
[