guix_mirror_bot pushed a commit to branch gnome-team
in repository guix.

commit dffa212241321fa04738db0d79532efe912c82d9
Author: Maxim Cournoyer <[email protected]>
AuthorDate: Wed Aug 26 22:59:55 2026 +0900

    gnu: libsoup-minimal: Update to 3.6.6.
    
    * gnu/packages/gnome.scm (libsoup-minimal): Update to 3.6.6.
    [source]: Delete patches.
    * gnu/packages/patches/libsoup-auth-digest-fix-crash.patch
    * gnu/packages/patches/libsoup-deadlock-in-add_listener_in_thread.patch
    * gnu/packages/patches/libsoup-fix-merge-of-ranges.patch
    * gnu/packages/patches/libsoup-memory-leak-in-soup_form_decode.patch
    * gnu/packages/patches/libsoup-multipart-bounds-check.patch
    * gnu/packages/patches/libsoup-use-libdl-instead-of-gmodule.patch: Delete 
files.
    * gnu/local.mk (dist_patch_DATA): De-register them.
    
    Signed-off-by: Liliana Marie Prikler <[email protected]>
---
 gnu/local.mk                                       |   6 -
 gnu/packages/gnome.scm                             |  12 +-
 .../patches/libsoup-auth-digest-fix-crash.patch    |  31 ----
 ...ibsoup-deadlock-in-add_listener_in_thread.patch |  42 -----
 .../patches/libsoup-fix-merge-of-ranges.patch      | 192 ---------------------
 .../libsoup-memory-leak-in-soup_form_decode.patch  | 101 -----------
 .../patches/libsoup-multipart-bounds-check.patch   | 106 ------------
 .../libsoup-use-libdl-instead-of-gmodule.patch     |  70 --------
 8 files changed, 2 insertions(+), 558 deletions(-)

diff --git a/gnu/local.mk b/gnu/local.mk
index bc589e80e72..fb200ca0568 100644
--- a/gnu/local.mk
+++ b/gnu/local.mk
@@ -1858,12 +1858,6 @@ dist_patch_DATA =                                        
        \
   %D%/packages/patches/libsepol-versioned-docbook.patch                \
   %D%/packages/patches/libsndfile-CVE-2025-52194.patch \
   %D%/packages/patches/libsndfile-CVE-2026-37555.patch \
-  %D%/packages/patches/libsoup-auth-digest-fix-crash.patch      \
-  %D%/packages/patches/libsoup-deadlock-in-add_listener_in_thread.patch \
-  %D%/packages/patches/libsoup-fix-merge-of-ranges.patch        \
-  %D%/packages/patches/libsoup-memory-leak-in-soup_form_decode.patch    \
-  %D%/packages/patches/libsoup-multipart-bounds-check.patch     \
-  %D%/packages/patches/libsoup-use-libdl-instead-of-gmodule.patch       \
   %D%/packages/patches/libspatialite-libxml2-2.14.patch                \
   %D%/packages/patches/libtar-CVE-2013-4420.patch              \
   %D%/packages/patches/libtar-CVE-2021-33643-CVE-2021-33644.patch      \
diff --git a/gnu/packages/gnome.scm b/gnu/packages/gnome.scm
index e8aaa840574..8eaf952c6fa 100644
--- a/gnu/packages/gnome.scm
+++ b/gnu/packages/gnome.scm
@@ -4920,7 +4920,7 @@ as OpenStreetMap, OpenCycleMap, OpenAerialMap and Maps.")
 (define-public libsoup-minimal
   (package
     (name "libsoup-minimal")
-    (version "3.6.5")
+    (version "3.6.6")
     (source (origin
               (method url-fetch)
               (uri (string-append "mirror://gnome/sources/libsoup/"
@@ -4928,15 +4928,7 @@ as OpenStreetMap, OpenCycleMap, OpenAerialMap and Maps.")
                                   "libsoup-" version ".tar.xz"))
               (sha256
                (base32
-                "0d52mnvvsvwpc3scjva5fbvns8f8ijyswgjwjhbr151ymid7d4b8"))
-              (patches
-               (search-patches
-                "libsoup-auth-digest-fix-crash.patch"
-                "libsoup-deadlock-in-add_listener_in_thread.patch"
-                "libsoup-fix-merge-of-ranges.patch"
-                "libsoup-memory-leak-in-soup_form_decode.patch"
-                "libsoup-multipart-bounds-check.patch"
-                "libsoup-use-libdl-instead-of-gmodule.patch"))))
+                "0h17hza18vg6kqsy2c3p1d8rlbv5bwp9wigz07s40nlxdzh0mvai"))))
     (build-system meson-build-system)
     (arguments
      (list
diff --git a/gnu/packages/patches/libsoup-auth-digest-fix-crash.patch 
b/gnu/packages/patches/libsoup-auth-digest-fix-crash.patch
deleted file mode 100644
index 7b147338a25..00000000000
--- a/gnu/packages/patches/libsoup-auth-digest-fix-crash.patch
+++ /dev/null
@@ -1,31 +0,0 @@
-From: Michael Catanzaro <[email protected]>
-Date: Thu, 8 May 2025 09:27:01 -0500
-Subject: auth-digest: fix crash in soup_auth_digest_get_protection_space()
-
-We need to validate the Domain parameter in the WWW-Authenticate header.
-
-Unfortunately this crash only occurs when listening on default ports 80
-and 443, so there's no good way to test for this. The test would require
-running as root.
-
-Origin: upstream, 3.7.0, commit:e64c221f9c7d09b48b610c5626b3b8c400f0907c
-Bug: https://gitlab.gnome.org/GNOME/libsoup/-/issues/440
-Bug-CVE: https://security-tracker.debian.org/tracker/CVE-2025-4476
-Bug-Debian: https://bugs.debian.org/1105887
----
- libsoup/auth/soup-auth-digest.c | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-diff --git a/libsoup/auth/soup-auth-digest.c b/libsoup/auth/soup-auth-digest.c
-index d8bb291..292f204 100644
---- a/libsoup/auth/soup-auth-digest.c
-+++ b/libsoup/auth/soup-auth-digest.c
-@@ -220,7 +220,7 @@ soup_auth_digest_get_protection_space (SoupAuth *auth, 
GUri *source_uri)
-                       if (uri &&
-                             g_strcmp0 (g_uri_get_scheme (uri), 
g_uri_get_scheme (source_uri)) == 0 &&
-                           g_uri_get_port (uri) == g_uri_get_port (source_uri) 
&&
--                          !strcmp (g_uri_get_host (uri), g_uri_get_host 
(source_uri)))
-+                          !g_strcmp0 (g_uri_get_host (uri), g_uri_get_host 
(source_uri)))
-                               dir = g_strdup (g_uri_get_path (uri));
-                       else
-                               dir = NULL;
diff --git 
a/gnu/packages/patches/libsoup-deadlock-in-add_listener_in_thread.patch 
b/gnu/packages/patches/libsoup-deadlock-in-add_listener_in_thread.patch
deleted file mode 100644
index 1e3fa161bcc..00000000000
--- a/gnu/packages/patches/libsoup-deadlock-in-add_listener_in_thread.patch
+++ /dev/null
@@ -1,42 +0,0 @@
-From: Michael Catanzaro <[email protected]>
-Date: Wed, 30 Apr 2025 14:13:41 -0500
-Subject: test-utils: fix deadlock in add_listener_in_thread()
-
-The mutex is locked in the wrong place here.
-
-Hopefully fixes #379
-
-Origin: upstream, 3.7.0, commit:3c0cee2cfddb9ba31b30421f2b3cdd3c5a255e99
-Bug: https://gitlab.gnome.org/GNOME/libsoup/-/issues/379
----
- tests/test-utils.c | 6 ++++--
- 1 file changed, 4 insertions(+), 2 deletions(-)
-
-diff --git a/tests/test-utils.c b/tests/test-utils.c
-index 62f0b83..6fb09b6 100644
---- a/tests/test-utils.c
-+++ b/tests/test-utils.c
-@@ -627,9 +627,11 @@ static gboolean
- add_listener_in_thread (gpointer user_data)
- {
-       AddListenerData *data = user_data;
-+      GUri *uri;
- 
--      data->uri = add_listener (data->server, data->scheme, data->host);
-+      uri = add_listener (data->server, data->scheme, data->host);
-       g_mutex_lock (&data->mutex);
-+      data->uri = uri;
-       g_cond_signal (&data->cond);
-       g_mutex_unlock (&data->mutex);
- 
-@@ -661,9 +663,9 @@ soup_test_server_get_uri (SoupServer    *server,
-               data.host = host;
-               data.uri = NULL;
- 
--              g_mutex_lock (&data.mutex);
-               soup_add_completion (context, add_listener_in_thread, &data);
- 
-+              g_mutex_lock (&data.mutex);
-               while (!data.uri)
-                       g_cond_wait (&data.cond, &data.mutex);
- 
diff --git a/gnu/packages/patches/libsoup-fix-merge-of-ranges.patch 
b/gnu/packages/patches/libsoup-fix-merge-of-ranges.patch
deleted file mode 100644
index 5cc7325a5d8..00000000000
--- a/gnu/packages/patches/libsoup-fix-merge-of-ranges.patch
+++ /dev/null
@@ -1,192 +0,0 @@
-From: Milan Crha <[email protected]>
-Date: Tue, 15 Apr 2025 12:17:39 +0200
-Subject: soup-message-headers: Correct merge of ranges
-
-It had been skipping every second range, which generated an array
-of a lot of insane ranges, causing large memory usage by the server.
-
-Origin: upstream, 3.7.0, commit:9bb92f7a685e31e10e9e8221d0342280432ce836
-Bug: https://gitlab.gnome.org/GNOME/libsoup/-/issues/428
-Bug-CVE: https://security-tracker.debian.org/tracker/CVE-2025-32907
-Bug-Debian: https://bugs.debian.org/1103264
----
- libsoup/soup-message-headers.c |   1 +
- tests/meson.build              |   1 +
- tests/server-mem-limit-test.c  | 144 +++++++++++++++++++++++++++++++++++++++++
- 3 files changed, 146 insertions(+)
- create mode 100644 tests/server-mem-limit-test.c
-
-diff --git a/libsoup/soup-message-headers.c b/libsoup/soup-message-headers.c
-index ee7a3cb..f101d4b 100644
---- a/libsoup/soup-message-headers.c
-+++ b/libsoup/soup-message-headers.c
-@@ -1244,6 +1244,7 @@ soup_message_headers_get_ranges_internal 
(SoupMessageHeaders  *hdrs,
-                       if (cur->start <= prev->end) {
-                               prev->end = MAX (prev->end, cur->end);
-                               g_array_remove_index (array, i);
-+                              i--;
-                       }
-               }
-       }
-diff --git a/tests/meson.build b/tests/meson.build
-index cf4ddbd..68e6d01 100644
---- a/tests/meson.build
-+++ b/tests/meson.build
-@@ -102,6 +102,7 @@ tests = [
-   {'name': 'samesite'},
-   {'name': 'session'},
-   {'name': 'server-auth'},
-+  {'name': 'server-mem-limit'},
-   {'name': 'server'},
-   {'name': 'sniffing',
-     'depends': [test_resources],
-diff --git a/tests/server-mem-limit-test.c b/tests/server-mem-limit-test.c
-new file mode 100644
-index 0000000..98f1c40
---- /dev/null
-+++ b/tests/server-mem-limit-test.c
-@@ -0,0 +1,144 @@
-+/* -*- Mode: C; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 8 -*- */
-+/*
-+ * Copyright (C) 2025 Red Hat <www.redhat.com>
-+ */
-+
-+#include "test-utils.h"
-+
-+#include <sys/resource.h>
-+
-+/*
-+ This test limits memory usage to trigger too large buffer allocation crash.
-+ As restoring the limits back to what it was does not always work, it's split
-+ out of the server-test.c test with copied minimal server code.
-+ */
-+
-+typedef struct {
-+      SoupServer *server;
-+      GUri *base_uri, *ssl_base_uri;
-+      GSList *handlers;
-+} ServerData;
-+
-+static void
-+server_setup_nohandler (ServerData *sd, gconstpointer test_data)
-+{
-+      sd->server = soup_test_server_new (SOUP_TEST_SERVER_IN_THREAD);
-+      sd->base_uri = soup_test_server_get_uri (sd->server, "http", NULL);
-+      if (tls_available)
-+              sd->ssl_base_uri = soup_test_server_get_uri (sd->server, 
"https", NULL);
-+}
-+
-+static void
-+server_add_handler (ServerData         *sd,
-+                  const char         *path,
-+                  SoupServerCallback  callback,
-+                  gpointer            user_data,
-+                  GDestroyNotify      destroy)
-+{
-+      soup_server_add_handler (sd->server, path, callback, user_data, 
destroy);
-+      sd->handlers = g_slist_prepend (sd->handlers, g_strdup (path));
-+}
-+
-+static void
-+server_setup (ServerData *sd, gconstpointer test_data)
-+{
-+      server_setup_nohandler (sd, test_data);
-+}
-+
-+static void
-+server_teardown (ServerData *sd, gconstpointer test_data)
-+{
-+      GSList *iter;
-+
-+      for (iter = sd->handlers; iter; iter = iter->next)
-+              soup_server_remove_handler (sd->server, iter->data);
-+      g_slist_free_full (sd->handlers, g_free);
-+
-+      g_clear_pointer (&sd->server, soup_test_server_quit_unref);
-+      g_clear_pointer (&sd->base_uri, g_uri_unref);
-+      g_clear_pointer (&sd->ssl_base_uri, g_uri_unref);
-+}
-+
-+static void
-+server_file_callback (SoupServer        *server,
-+                    SoupServerMessage *msg,
-+                    const char        *path,
-+                    GHashTable        *query,
-+                    gpointer           data)
-+{
-+      void *mem;
-+
-+      g_assert_cmpstr (path, ==, "/file");
-+      g_assert_cmpstr (soup_server_message_get_method (msg), ==, 
SOUP_METHOD_GET);
-+
-+      mem = g_malloc0 (sizeof (char) * 1024 * 1024);
-+      /* fedora-scan CI claims a warning about possibly leaked `mem` 
variable, thus use
-+         the copy and free it explicitly, to workaround the false positive; 
the g_steal_pointer()
-+         did not help for the malloc-ed memory */
-+      soup_server_message_set_response (msg, "application/octet-stream", 
SOUP_MEMORY_COPY, mem, sizeof (char) * 1024 *1024);
-+      soup_server_message_set_status (msg, SOUP_STATUS_OK, NULL);
-+      g_free (mem);
-+}
-+
-+static void
-+do_ranges_overlaps_test (ServerData *sd, gconstpointer test_data)
-+{
-+      SoupSession *session;
-+      SoupMessage *msg;
-+      GString *range;
-+      GUri *uri;
-+      const char *chunk = ",0,0,0,0,0,0,0,0,0,0,0";
-+
-+      g_test_bug ("428");
-+
-+      #ifdef G_OS_WIN32
-+      g_test_skip ("Cannot run under windows");
-+      return;
-+      #endif
-+
-+      range = g_string_sized_new (99 * 1024);
-+      g_string_append (range, "bytes=1024");
-+      while (range->len < 99 * 1024)
-+              g_string_append (range, chunk);
-+
-+      session = soup_test_session_new (NULL);
-+      server_add_handler (sd, "/file", server_file_callback, NULL, NULL);
-+
-+      uri = g_uri_parse_relative (sd->base_uri, "/file", SOUP_HTTP_URI_FLAGS, 
NULL);
-+
-+      msg = soup_message_new_from_uri ("GET", uri);
-+      soup_message_headers_append (soup_message_get_request_headers (msg), 
"Range", range->str);
-+
-+      soup_test_session_send_message (session, msg);
-+
-+      soup_test_assert_message_status (msg, SOUP_STATUS_PARTIAL_CONTENT);
-+
-+      g_object_unref (msg);
-+
-+      g_string_free (range, TRUE);
-+      g_uri_unref (uri);
-+
-+      soup_test_session_abort_unref (session);
-+}
-+
-+int
-+main (int argc, char **argv)
-+{
-+      int ret;
-+
-+      test_init (argc, argv, NULL);
-+
-+      #ifndef G_OS_WIN32
-+      struct rlimit new_rlimit = { 1024 * 1024 * 64, 1024 * 1024 * 64 };
-+      /* limit memory usage, to trigger too large memory allocation abort */
-+      g_assert_cmpint (setrlimit (RLIMIT_DATA, &new_rlimit), ==, 0);
-+      #endif
-+
-+      g_test_add ("/server-mem/range-overlaps", ServerData, NULL,
-+                  server_setup, do_ranges_overlaps_test, server_teardown);
-+
-+      ret = g_test_run ();
-+
-+      test_cleanup ();
-+      return ret;
-+}
diff --git a/gnu/packages/patches/libsoup-memory-leak-in-soup_form_decode.patch 
b/gnu/packages/patches/libsoup-memory-leak-in-soup_form_decode.patch
deleted file mode 100644
index ccba980ab73..00000000000
--- a/gnu/packages/patches/libsoup-memory-leak-in-soup_form_decode.patch
+++ /dev/null
@@ -1,101 +0,0 @@
-From: Milan Crha <[email protected]>
-Date: Tue, 13 May 2025 10:38:49 +0200
-Subject: soup-form: Fix a possible memory leak in
- soup_form_decode_multipart()
-
-The output variables can be set multiple times, when there are multiparts
-with the same name, thus first clear any previously value and only then
-assign a new value.
-
-Origin: upstream, 3.7.0, commit:66b5c5be947062df9caf7025b56ee1de32aee3ac
-Bug: https://gitlab.gnome.org/GNOME/libsoup/-/issues/446
----
- libsoup/soup-form.c | 12 +++++++++---
- tests/forms-test.c  | 41 +++++++++++++++++++++++++++++++++++++++++
- 2 files changed, 50 insertions(+), 3 deletions(-)
-
-diff --git a/libsoup/soup-form.c b/libsoup/soup-form.c
-index 2eb5d57..98130c8 100644
---- a/libsoup/soup-form.c
-+++ b/libsoup/soup-form.c
-@@ -168,12 +168,18 @@ soup_form_decode_multipart (SoupMultipart *multipart,
-               }
- 
-               if (file_control_name && !strcmp (name, file_control_name)) {
--                      if (filename)
-+                      if (filename) {
-+                              g_free (*filename);
-                               *filename = g_strdup (g_hash_table_lookup 
(params, "filename"));
--                      if (content_type)
-+                      }
-+                      if (content_type) {
-+                              g_free (*content_type);
-                               *content_type = g_strdup 
(soup_message_headers_get_content_type (part_headers, NULL));
--                      if (file)
-+                      }
-+                      if (file) {
-+                              g_clear_pointer (file, g_bytes_unref);
-                               *file = g_bytes_ref (part_body);
-+                      }
-               } else {
-                       g_hash_table_insert (form_data_set,
-                                            g_strdup (name),
-diff --git a/tests/forms-test.c b/tests/forms-test.c
-index 1002374..183900f 100644
---- a/tests/forms-test.c
-+++ b/tests/forms-test.c
-@@ -485,6 +485,46 @@ md5_callback (SoupServer        *server,
-               soup_server_message_set_status (msg, 
SOUP_STATUS_METHOD_NOT_ALLOWED, NULL);
- }
- 
-+static void
-+do_form_decode_multipart_test (void)
-+{
-+      SoupMultipart *multipart = soup_multipart_new ("multipart/form-data");
-+      const char *file_control_name = "uploaded_file";
-+      char *content_type = NULL;
-+      char *filename = NULL;
-+      GBytes *file = NULL;
-+      GHashTable *result;
-+      int part;
-+
-+      for (part = 0; part < 2; part++) {
-+              SoupMessageHeaders *headers = soup_message_headers_new 
(SOUP_MESSAGE_HEADERS_MULTIPART);
-+              GHashTable *params = g_hash_table_new_full (g_str_hash, 
g_str_equal, g_free, g_free);
-+              GBytes *body = g_bytes_new (NULL, 0);
-+
-+              g_hash_table_insert (params, g_strdup ("name"), g_strdup 
(file_control_name));
-+              g_hash_table_insert (params, g_strdup ("filename"), g_strdup 
(file_control_name));
-+              soup_message_headers_set_content_disposition (headers, 
"form-data", params);
-+              soup_message_headers_set_content_type (headers, "text/x-form", 
NULL);
-+              soup_multipart_append_part (multipart, headers, body);
-+
-+              soup_message_headers_unref (headers);
-+              g_hash_table_destroy (params);
-+              g_bytes_unref (body);
-+      }
-+
-+      /* this would leak memory of the output variables, due to two parts 
having the same 'file_control_name' */
-+      result = soup_form_decode_multipart (multipart, file_control_name, 
&filename, &content_type, &file);
-+      g_assert_nonnull (result);
-+      g_assert_cmpstr (content_type, ==, "text/x-form");
-+      g_assert_cmpstr (filename, ==, file_control_name);
-+      g_assert_nonnull (file);
-+
-+      g_hash_table_destroy (result);
-+      g_free (content_type);
-+      g_free (filename);
-+      g_bytes_unref (file);
-+}
-+
- static gboolean run_tests = TRUE;
- 
- static GOptionEntry no_test_entry[] = {
-@@ -525,6 +565,7 @@ main (int argc, char **argv)
-               g_uri_unref (uri);
- 
-               g_test_add_func ("/forms/decode", do_form_decode_test);
-+              g_test_add_func ("/forms/decodemultipart", 
do_form_decode_multipart_test);
- 
-               ret = g_test_run ();
-       } else {
diff --git a/gnu/packages/patches/libsoup-multipart-bounds-check.patch 
b/gnu/packages/patches/libsoup-multipart-bounds-check.patch
deleted file mode 100644
index 0bafe092063..00000000000
--- a/gnu/packages/patches/libsoup-multipart-bounds-check.patch
+++ /dev/null
@@ -1,106 +0,0 @@
-From: Milan Crha <[email protected]>
-Date: Tue, 15 Apr 2025 09:03:00 +0200
-Subject: multipart: Fix read out of buffer bounds under
- soup_multipart_new_from_message()
-
-This is CVE-2025-32914, special crafted input can cause read out of buffer 
bounds
-of the body argument.
-
-Origin: upstream, 3.7.0, commit:5bfcf8157597f2d327050114fb37ff600004dbcf
-Bug: https://gitlab.gnome.org/GNOME/libsoup/-/issues/436
-Bug-CVE: https://security-tracker.debian.org/tracker/CVE-2025-32914
-Bug-Debian: https://bugs.debian.org/1103267
----
- libsoup/soup-multipart.c |  2 +-
- tests/multipart-test.c   | 58 ++++++++++++++++++++++++++++++++++++++++++++++++
- 2 files changed, 59 insertions(+), 1 deletion(-)
-
-diff --git a/libsoup/soup-multipart.c b/libsoup/soup-multipart.c
-index 2421c91..102ce37 100644
---- a/libsoup/soup-multipart.c
-+++ b/libsoup/soup-multipart.c
-@@ -173,7 +173,7 @@ soup_multipart_new_from_message (SoupMessageHeaders 
*headers,
-                       return NULL;
-               }
- 
--              split = strstr (start, "\r\n\r\n");
-+              split = g_strstr_len (start, body_end - start, "\r\n\r\n");
-               if (!split || split > end) {
-                       soup_multipart_free (multipart);
-                       return NULL;
-diff --git a/tests/multipart-test.c b/tests/multipart-test.c
-index 2c0e7e9..f5b9868 100644
---- a/tests/multipart-test.c
-+++ b/tests/multipart-test.c
-@@ -471,6 +471,62 @@ test_multipart (gconstpointer data)
-       loop = NULL;
- }
- 
-+static void
-+test_multipart_bounds_good (void)
-+{
-+      #define TEXT "line1\r\nline2"
-+      SoupMultipart *multipart;
-+      SoupMessageHeaders *headers, *set_headers = NULL;
-+      GBytes *bytes, *set_bytes = NULL;
-+      const char *raw_data = "--123\r\nContent-Type: text/plain;\r\n\r\n" 
TEXT "\r\n--123--\r\n";
-+      gboolean success;
-+
-+      headers = soup_message_headers_new (SOUP_MESSAGE_HEADERS_MULTIPART);
-+      soup_message_headers_append (headers, "Content-Type", "multipart/mixed; 
boundary=\"123\"");
-+
-+      bytes = g_bytes_new (raw_data, strlen (raw_data));
-+
-+      multipart = soup_multipart_new_from_message (headers, bytes);
-+
-+      g_assert_nonnull (multipart);
-+      g_assert_cmpint (soup_multipart_get_length (multipart), ==, 1);
-+      success = soup_multipart_get_part (multipart, 0, &set_headers, 
&set_bytes);
-+      g_assert_true (success);
-+      g_assert_nonnull (set_headers);
-+      g_assert_nonnull (set_bytes);
-+      g_assert_cmpint (strlen (TEXT), ==, g_bytes_get_size (set_bytes));
-+      g_assert_cmpstr ("text/plain", ==, 
soup_message_headers_get_content_type (set_headers, NULL));
-+      g_assert_cmpmem (TEXT, strlen (TEXT), g_bytes_get_data (set_bytes, 
NULL), g_bytes_get_size (set_bytes));
-+
-+      soup_message_headers_unref (headers);
-+      g_bytes_unref (bytes);
-+
-+      soup_multipart_free (multipart);
-+
-+      #undef TEXT
-+}
-+
-+static void
-+test_multipart_bounds_bad (void)
-+{
-+      SoupMultipart *multipart;
-+      SoupMessageHeaders *headers;
-+      GBytes *bytes;
-+      const char *raw_data = "--123\r\nContent-Type: 
text/plain;\r\nline1\r\nline2\r\n--123--\r\n";
-+
-+      headers = soup_message_headers_new (SOUP_MESSAGE_HEADERS_MULTIPART);
-+      soup_message_headers_append (headers, "Content-Type", "multipart/mixed; 
boundary=\"123\"");
-+
-+      bytes = g_bytes_new (raw_data, strlen (raw_data));
-+
-+      /* it did read out of raw_data/bytes bounds */
-+      multipart = soup_multipart_new_from_message (headers, bytes);
-+      g_assert_null (multipart);
-+
-+      soup_message_headers_unref (headers);
-+      g_bytes_unref (bytes);
-+}
-+
- int
- main (int argc, char **argv)
- {
-@@ -498,6 +554,8 @@ main (int argc, char **argv)
-       g_test_add_data_func ("/multipart/sync", GINT_TO_POINTER 
(SYNC_MULTIPART), test_multipart);
-       g_test_add_data_func ("/multipart/async", GINT_TO_POINTER 
(ASYNC_MULTIPART), test_multipart);
-       g_test_add_data_func ("/multipart/async-small-reads", GINT_TO_POINTER 
(ASYNC_MULTIPART_SMALL_READS), test_multipart);
-+      g_test_add_func ("/multipart/bounds-good", test_multipart_bounds_good);
-+      g_test_add_func ("/multipart/bounds-bad", test_multipart_bounds_bad);
- 
-       ret = g_test_run ();
- 
diff --git a/gnu/packages/patches/libsoup-use-libdl-instead-of-gmodule.patch 
b/gnu/packages/patches/libsoup-use-libdl-instead-of-gmodule.patch
deleted file mode 100644
index 3b6608cb04d..00000000000
--- a/gnu/packages/patches/libsoup-use-libdl-instead-of-gmodule.patch
+++ /dev/null
@@ -1,70 +0,0 @@
-From: Fabio Manganiello <[email protected]>
-Date: Tue, 15 Jul 2025 15:41:47 +0200
-Subject: soup-init: Use libdl instead of gmodule in `soup2_is_loaded` check
-
-Calling `g_module_open` in the library constructor can cause deadlocks
-when libsoup is used with other libraries that also contend for GLib
-mutexes. `dlopen` should be used instead.
-
-Co-authored-by: Nirbheek Chauhan <[email protected]>
-Bug: https://gitlab.gnome.org/GNOME/libsoup/-/issues/463
-Bug: https://gitlab.gnome.org/GNOME/glib/-/issues/1443
-Bug-Debian: https://bugs.debian.org/1109685
-Origin: https://gitlab.gnome.org/GNOME/libsoup/-/merge_requests/475
-Applied-upstream: 3.7.0, commit:1296cbf983f036f20262c453926dff77e1d6a852
-Applied-upstream: 3.6.6, commit:2316e56a5502ac4c41ef4ff56a3266e680aca129
----
- libsoup/soup-init.c | 28 +++++++++++++++++-----------
- 1 file changed, 17 insertions(+), 11 deletions(-)
-
-diff --git a/libsoup/soup-init.c b/libsoup/soup-init.c
-index 8a33c77..3392e8e 100644
---- a/libsoup/soup-init.c
-+++ b/libsoup/soup-init.c
-@@ -10,7 +10,6 @@
- #endif
- 
- #include <glib/gi18n-lib.h>
--#include <gmodule.h>
- #include "gconstructor.h"
- 
- #ifdef G_OS_WIN32
-@@ -18,21 +17,28 @@
- #include <windows.h>
- 
- HMODULE soup_dll;
-+#else
-+#include <dlfcn.h>
- #endif
- 
- static gboolean
- soup2_is_loaded (void)
- {
--    GModule *module = g_module_open (NULL, 0);
--    gpointer func;
--    gboolean result = FALSE;
--
--    if (g_module_symbol (module, "soup_uri_new", &func))
--        result = TRUE;
--
--    g_module_close (module);
--
--    return result;
-+      gboolean result = FALSE;
-+
-+      /* Skip on PE/COFF, as it doesn't have a flat symbol namespace */
-+#ifndef G_OS_WIN32
-+      gpointer handle;
-+      gpointer func;
-+
-+      handle = dlopen (NULL, RTLD_LAZY | RTLD_GLOBAL);
-+      if (handle != NULL) {
-+              func = dlsym (handle, "soup_uri_new");
-+              result = (func != NULL);
-+              dlclose (handle);
-+      }
-+#endif
-+      return result;
- }
- 
- static void

Reply via email to