guix_mirror_bot pushed a commit to branch misc-world-rebuild
in repository guix.

commit 4ad516e606a4424f1da94a13d47d2c546e4092ba
Author: Yelninei <[email protected]>
AuthorDate: Wed Apr 15 13:35:17 2026 +0000

    gnu: curl: Update to 8.20.
    
    * gnu/packages/patches/curl-use-ssl-cert-env.patch: Refresh patch.
    * gnu/packages/patches/curl-CVE-2024-8096.patch: Delete patch.
    * gnu/local.mk (dist_patch_DATA): Deregister it.
    * gnu/packages/curl.scm (curl): Update to 8.20.
      [origin]: Remove curl-CVE-2024-8096.patch.
      [native-inputs]: Add openssl.
      [#:phases]: Add 'sanitize-libcurl.pc phase.
    
    Change-Id: I8e609ed8e0e337b42457ebc7bc646eeb454cc432
    Merges: https://codeberg.org/guix/guix/pulls/7919
    Signed-off-by: Nguyễn Gia Phong <[email protected]>
---
 gnu/local.mk                                     |  1 -
 gnu/packages/curl.scm                            | 19 ++++---
 gnu/packages/patches/curl-use-ssl-cert-env.patch | 66 ++++++++++++++----------
 3 files changed, 53 insertions(+), 33 deletions(-)

diff --git a/gnu/local.mk b/gnu/local.mk
index 20dbc8cd3a..b46f49a39f 100644
--- a/gnu/local.mk
+++ b/gnu/local.mk
@@ -1173,7 +1173,6 @@ dist_patch_DATA =                                         
\
   %D%/packages/patches/cube-nocheck.patch                      \
   %D%/packages/patches/cups-relax-root-ownership-check.patch           \
   %D%/packages/patches/cura-engine-gcc-14.patch                        \
-  %D%/packages/patches/curl-CVE-2024-8096.patch                        \
   %D%/packages/patches/curl-use-ssl-cert-env.patch             \
   %D%/packages/patches/curlftpfs-fix-error-closing-file.patch  \
   %D%/packages/patches/curlftpfs-fix-file-names.patch          \
diff --git a/gnu/packages/curl.scm b/gnu/packages/curl.scm
index 9d93530508..43c0725a88 100644
--- a/gnu/packages/curl.scm
+++ b/gnu/packages/curl.scm
@@ -68,16 +68,15 @@
 (define-public curl
   (package
     (name "curl")
-    (version "8.6.0")
+    (version "8.20.0")
     (source (origin
               (method url-fetch)
               (uri (string-append "https://curl.se/download/curl-";
                                   version ".tar.xz"))
               (sha256
                (base32
-                "05fv468yjrb7qwrxmfprxkrcckbkij0myql0vwwnalgr3bcmbk9w"))
-              (patches (search-patches "curl-use-ssl-cert-env.patch"
-                                       "curl-CVE-2024-8096.patch"))))
+                "15mqw8y9vdxlz9cpr2z7q9r6552wgs7q7vr2k7lfl35s930jvzk3"))
+              (patches (search-patches "curl-use-ssl-cert-env.patch"))))
     (outputs '("out"
                "doc"))                  ;1.2 MiB of man3 pages
     (build-system gnu-build-system)
@@ -134,9 +133,17 @@
                           (display "1474\n" port)
                           (display "1501\n" port)
                           (close port)))))
-                 #~()))))
+                 #~())
+          (add-after 'install 'sanitize-libcurl.pc
+            (lambda _
+              ;; The pkgconfig file has all dependencies in Requires.private
+              ;; which is unnecessary for our shared library use and would
+              ;; require propagating them.
+              (substitute* (string-append #$output "/lib/pkgconfig/libcurl.pc")
+                (("^Requires.private:.*") "")))))))
     (native-inputs
-     (list nghttp2 perl pkg-config python-minimal-wrapper))
+     (list nghttp2 perl pkg-config python-minimal-wrapper
+           openssl))                    ;for tests
     (inputs
      (list gnutls libidn libpsl mit-krb5 `(,nghttp2 "lib") zlib))
     (native-search-paths
diff --git a/gnu/packages/patches/curl-use-ssl-cert-env.patch 
b/gnu/packages/patches/curl-use-ssl-cert-env.patch
index c39c1f7e98..445e52c430 100644
--- a/gnu/packages/patches/curl-use-ssl-cert-env.patch
+++ b/gnu/packages/patches/curl-use-ssl-cert-env.patch
@@ -5,60 +5,74 @@ must be called when no other threads exist).
 This fixes network functionality in rust:cargo, and probably removes the need
 for other future workarounds.
 ===================================================================
---- curl-8.5.0.orig/lib/easy.c 2023-12-17 00:36:32.400468561 -0500
-+++ curl-8.5.0/lib/easy.c      2023-12-17 00:39:08.898612331 -0500
-@@ -137,6 +137,9 @@
+Index: curl-8.19.0/lib/easy.c
+===================================================================
+--- curl-8.19.0.orig/lib/easy.c
++++ curl-8.19.0/lib/easy.c
+@@ -117,6 +117,9 @@ curl_calloc_callback Curl_ccalloc = (cur
  static char *leakpointer;
  #endif
-
+ 
 +char * Curl_ssl_cert_dir = NULL;
 +char * Curl_ssl_cert_file = NULL;
 +
  /**
   * curl_global_init() globally initializes curl given a bitwise set of the
   * different features of what to initialize.
-@@ -163,6 +166,9 @@
+@@ -140,6 +143,9 @@ static CURLcode global_init(long flags,
      goto fail;
    }
-
+ 
 +  Curl_ssl_cert_dir = curl_getenv("SSL_CERT_DIR");
 +  Curl_ssl_cert_file = curl_getenv("SSL_CERT_FILE");
 +
    if(!Curl_ssl_init()) {
-     DEBUGF(fprintf(stderr, "Error: Curl_ssl_init failed\n"));
+     DEBUGF(curl_mfprintf(stderr, "Error: Curl_ssl_init failed\n"));
      goto fail;
-@@ -287,6 +293,9 @@
+@@ -269,6 +275,9 @@ void curl_global_cleanup(void)
    Curl_ssl_cleanup();
-   Curl_resolver_global_cleanup();
-
+   Curl_async_global_cleanup();
+ 
 +  free(Curl_ssl_cert_dir);
 +  free(Curl_ssl_cert_file);
 +
  #ifdef _WIN32
    Curl_win32_cleanup(easy_init_flags);
  #endif
-diff -ur curl-7.66.0.orig/lib/url.c curl-7.66.0/lib/url.c
---- curl-7.66.0.orig/lib/url.c 2020-01-02 15:43:11.883921171 +0100
-+++ curl-7.66.0/lib/url.c      2020-01-02 16:21:11.563880346 +0100
-@@ -524,6 +524,21 @@
-     if(result)
-       return result;
+Index: curl-8.19.0/lib/vtls/vtls.c
+===================================================================
+--- curl-8.19.0.orig/lib/vtls/vtls.c
++++ curl-8.19.0/lib/vtls/vtls.c
+@@ -294,10 +294,8 @@ static void free_primary_ssl_config(stru
+ CURLcode Curl_ssl_easy_config_complete(struct Curl_easy *data)
+ {
+   struct ssl_config_data *sslc = &data->set.ssl;
+-#if defined(CURL_CA_PATH) || defined(CURL_CA_BUNDLE)
+   struct UserDefined *set = &data->set;
+   CURLcode result;
+-#endif
+ 
+   if(Curl_ssl_backend() != CURLSSLBACKEND_SCHANNEL) {
+ #if defined(USE_APPLE_SECTRUST) || defined(CURL_CA_NATIVE)
+@@ -318,6 +316,21 @@ CURLcode Curl_ssl_easy_config_complete(s
+         return result;
+     }
  #endif
 +    extern char * Curl_ssl_cert_dir;
 +    extern char * Curl_ssl_cert_file;
 +    if(Curl_ssl_cert_dir) {
-+        if(result = Curl_setstropt(&set->str[STRING_SSL_CAPATH], 
Curl_ssl_cert_dir))
-+            return result;
-+        if(result = Curl_setstropt(&set->str[STRING_SSL_CAPATH_PROXY], 
Curl_ssl_cert_dir))
-+            return result;
++      if(result = Curl_setstropt(&set->str[STRING_SSL_CAPATH], 
Curl_ssl_cert_dir))
++        return result;
++      if(result = Curl_setstropt(&set->str[STRING_SSL_CAPATH_PROXY], 
Curl_ssl_cert_dir))
++        return result;
 +    }
 +
 +    if(Curl_ssl_cert_file) {
-+        if(result = Curl_setstropt(&set->str[STRING_SSL_CAFILE], 
Curl_ssl_cert_file))
-+            return result;
-+        if(result = Curl_setstropt(&set->str[STRING_SSL_CAFILE_PROXY], 
Curl_ssl_cert_file))
-+            return result;
++      if(result = Curl_setstropt(&set->str[STRING_SSL_CAFILE], 
Curl_ssl_cert_file))
++        return result;
++      if(result = Curl_setstropt(&set->str[STRING_SSL_CAFILE_PROXY], 
Curl_ssl_cert_file))
++        return result;
 +    }
    }
- 
-   set->wildcard_enabled = FALSE;
+   sslc->primary.CAfile = data->set.str[STRING_SSL_CAFILE];
+   sslc->primary.CRLfile = data->set.str[STRING_SSL_CRLFILE];

Reply via email to