Script 'mail_helper' called by obssrc
Hello community,

here is the log from the commit of package libsoup for openSUSE:Factory checked 
in at 2026-02-03 21:26:28
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/libsoup (Old)
 and      /work/SRC/openSUSE:Factory/.libsoup.new.1995 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "libsoup"

Tue Feb  3 21:26:28 2026 rev:163 rq:1330729 version:3.6.5

Changes:
--------
--- /work/SRC/openSUSE:Factory/libsoup/libsoup.changes  2026-01-13 
21:23:26.764409060 +0100
+++ /work/SRC/openSUSE:Factory/.libsoup.new.1995/libsoup.changes        
2026-02-03 21:26:46.856743383 +0100
@@ -1,0 +2,10 @@
+Tue Feb  3 01:52:48 UTC 2026 - Jonathan Kang <[email protected]>
+
+- Add libsoup-CVE-2026-1536.patch: Always validate the headers
+  value when coming from untrusted source
+  (bsc#1257440, CVE-2026-1536, glgo#GNOME/libsoup/commit/5c1a2e9c).
+- Add libsoup-CVE-2026-1761.patch: multipart: check length of bytes
+  read soup_filter_input_stream_read_until()
+  (bsc#1257598, CVE-2026-1761, glgo#GNOME/libsoup!496).
+
+-------------------------------------------------------------------

New:
----
  libsoup-CVE-2026-1536.patch
  libsoup-CVE-2026-1761.patch

----------(New B)----------
  New:
- Add libsoup-CVE-2026-1536.patch: Always validate the headers
  value when coming from untrusted source
  New:  (bsc#1257440, CVE-2026-1536, glgo#GNOME/libsoup/commit/5c1a2e9c).
- Add libsoup-CVE-2026-1761.patch: multipart: check length of bytes
  read soup_filter_input_stream_read_until()
----------(New E)----------

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Other differences:
------------------
++++++ libsoup.spec ++++++
--- /var/tmp/diff_new_pack.OcbPtI/_old  2026-02-03 21:26:47.644776544 +0100
+++ /var/tmp/diff_new_pack.OcbPtI/_new  2026-02-03 21:26:47.648776713 +0100
@@ -1,8 +1,7 @@
 #
 # spec file for package libsoup
 #
-# Copyright (c) 2026 SUSE LLC
-# Copyright (c) 2025 SUSE LLC and contributors
+# Copyright (c) 2026 SUSE LLC and contributors
 #
 # All modifications and additions to the file contributed by third parties
 # remain the property of their copyright owners, unless otherwise agreed
@@ -51,6 +50,10 @@
 Patch10:        libsoup-CVE-2026-0719.patch
 # PATCH-FIX-UPSTREAM libsoup-CVE-2026-0716.patch bsc#1256418, CVE-2026-0716, 
glgo#GNOME/libsoup!494 [email protected] -- Fix out-of-bounds read for 
websocket
 Patch11:        libsoup-CVE-2026-0716.patch
+# PATCH-FIX-UPSTREAM libsoup-CVE-2026-1536.patch bsc#1257440, CVE-2026-1536, 
glgo#GNOME/libsoup/commit/5c1a2e9c [email protected] -- Always validate the 
headers value when coming from untrusted source
+Patch12:        libsoup-CVE-2026-1536.patch
+# PATCH-FIX-UPSTREAM libsoup-CVE-2026-1761.patch bsc#1257598, CVE-2026-1761, 
glgo#GNOME/libsoup!496 [email protected] -- multipart: check length of bytes read 
soup_filter_input_stream_read_until()
+Patch13:        libsoup-CVE-2026-1761.patch
 
 BuildRequires:  glib-networking
 BuildRequires:  meson >= 0.53

++++++ libsoup-CVE-2026-1536.patch ++++++
++++ 695 lines (skipped)

++++++ libsoup-CVE-2026-1761.patch ++++++
>From cfa9d90d1a5c274233554a264c56551c13d6a6f0 Mon Sep 17 00:00:00 2001
From: Carlos Garcia Campos <[email protected]>
Date: Mon, 19 Jan 2026 15:14:58 +0100
Subject: [PATCH] multipart: check length of bytes read
 soup_filter_input_stream_read_until()

We do make sure the read length is smaller than the buffer length when
the boundary is not found, but we should do the same when the boundary
is found.

Spotted in #YWH-PGM9867-149
Closes #493
---
 libsoup/soup-filter-input-stream.c |  3 +-
 tests/multipart-test.c             | 46 ++++++++++++++++++++++++++++++
 2 files changed, 48 insertions(+), 1 deletion(-)

diff --git a/libsoup/soup-filter-input-stream.c 
b/libsoup/soup-filter-input-stream.c
index b1e616c7..22541aa0 100644
--- a/libsoup/soup-filter-input-stream.c
+++ b/libsoup/soup-filter-input-stream.c
@@ -337,6 +337,7 @@ soup_filter_input_stream_read_until (SoupFilterInputStream  
*fstream,
        if (eof && !*got_boundary)
                read_length = MIN (priv->buf->len, length);
        else
-               read_length = p - buf;
+                read_length = MIN ((gsize)(p - buf), length);
+
        return read_from_buf (fstream, buffer, read_length);
 }
diff --git a/tests/multipart-test.c b/tests/multipart-test.c
index a39d8aab..7f53898f 100644
--- a/tests/multipart-test.c
+++ b/tests/multipart-test.c
@@ -548,6 +548,51 @@ test_multipart_bounds_bad_2 (void)
        g_bytes_unref (bytes);
 }
 
+static void
+test_multipart_bounds_bad_3 (void)
+{
+        SoupMessage *msg;
+        SoupMessageHeaders *headers;
+        GInputStream *in;
+        SoupMultipartInputStream *multipart;
+        GError *error = NULL;
+        const char raw_data[] = "\0$--A\r\nContent-Disposition: form-data; 
name=\"f\"\r\n\r\nXXXXXXXXX\r\n--A--\r\n";
+
+        msg = soup_message_new(SOUP_METHOD_POST, "http://foo/upload";);
+        headers = soup_message_get_response_headers (msg);
+        soup_message_headers_replace (headers, "Content-Type", 
"multipart/form-data; boundary=\"A\"");
+
+        in = g_memory_input_stream_new_from_data (raw_data + 2, 
sizeof(raw_data) - 2, NULL);
+        multipart = soup_multipart_input_stream_new (msg, in);
+        g_object_unref (in);
+
+        while (TRUE) {
+                in = soup_multipart_input_stream_next_part (multipart, NULL, 
&error);
+                g_assert_no_error (error);
+                if (!in) {
+                        g_clear_error (&error);
+                        break;
+                }
+
+                char buffer[10];
+                while (TRUE) {
+                        gssize bytes_read;
+
+                        bytes_read = g_input_stream_read (in, buffer, 
sizeof(buffer), NULL, &error);
+                        g_assert_no_error (error);
+                        if (bytes_read <= 0) {
+                                g_clear_error (&error);
+                                break;
+                        }
+                }
+
+                g_object_unref (in);
+        }
+
+        g_object_unref (multipart);
+        g_object_unref (msg);
+}
+
 static void
 test_multipart_too_large (void)
 {
@@ -617,6 +662,7 @@ main (int argc, char **argv)
        g_test_add_func ("/multipart/bounds-good", test_multipart_bounds_good);
        g_test_add_func ("/multipart/bounds-bad", test_multipart_bounds_bad);
        g_test_add_func ("/multipart/bounds-bad-2", 
test_multipart_bounds_bad_2);
+        g_test_add_func ("/multipart/bounds-bad-3", 
test_multipart_bounds_bad_3);
        g_test_add_func ("/multipart/too-large", test_multipart_too_large);
 
        ret = g_test_run ();
-- 
2.52.0

Reply via email to