]> git.ipfire.org Git - thirdparty/openembedded/openembedded-core-contrib.git/commitdiff
libsoup: Fix CVE-2025-46420
authorVijay Anusuri <vanusuri@mvista.com>
Fri, 13 Jun 2025 05:44:54 +0000 (11:14 +0530)
committerSteve Sakoman <steve@sakoman.com>
Mon, 16 Jun 2025 14:46:17 +0000 (07:46 -0700)
Upstream-Status: Backport
[https://gitlab.gnome.org/GNOME/libsoup/-/commit/c9083869ec2a3037e6df4bd86b45c419ba295f8e]

Signed-off-by: Vijay Anusuri <vanusuri@mvista.com>
Signed-off-by: Steve Sakoman <steve@sakoman.com>
meta/recipes-support/libsoup/libsoup/CVE-2025-46420.patch [new file with mode: 0644]
meta/recipes-support/libsoup/libsoup_3.0.7.bb

diff --git a/meta/recipes-support/libsoup/libsoup/CVE-2025-46420.patch b/meta/recipes-support/libsoup/libsoup/CVE-2025-46420.patch
new file mode 100644 (file)
index 0000000..dbaec12
--- /dev/null
@@ -0,0 +1,60 @@
+From c9083869ec2a3037e6df4bd86b45c419ba295f8e Mon Sep 17 00:00:00 2001
+From: Patrick Griffis <pgriffis@igalia.com>
+Date: Thu, 26 Dec 2024 18:31:42 -0600
+Subject: [PATCH] soup_header_parse_quality_list: Fix leak
+
+When iterating over the parsed list we now steal the allocated strings that we want and then free_full the list which may contain remaining strings.
+
+Upstream-Status: Backport [https://gitlab.gnome.org/GNOME/libsoup/-/commit/c9083869ec2a3037e6df4bd86b45c419ba295f8e]
+CVE: CVE-2025-46420
+Signed-off-by: Vijay Anusuri <vanusuri@mvista.com>
+---
+ libsoup/soup-headers.c | 11 +++++------
+ 1 file changed, 5 insertions(+), 6 deletions(-)
+
+diff --git a/libsoup/soup-headers.c b/libsoup/soup-headers.c
+index a5f7a7f6..85385cea 100644
+--- a/libsoup/soup-headers.c
++++ b/libsoup/soup-headers.c
+@@ -530,7 +530,7 @@ soup_header_parse_quality_list (const char *header, GSList **unacceptable)
+       GSList *unsorted;
+       QualityItem *array;
+       GSList *sorted, *iter;
+-      char *item, *semi;
++      char *semi;
+       const char *param, *equal, *value;
+       double qval;
+       int n;
+@@ -543,9 +543,8 @@ soup_header_parse_quality_list (const char *header, GSList **unacceptable)
+       unsorted = soup_header_parse_list (header);
+       array = g_new0 (QualityItem, g_slist_length (unsorted));
+       for (iter = unsorted, n = 0; iter; iter = iter->next) {
+-              item = iter->data;
+               qval = 1.0;
+-              for (semi = strchr (item, ';'); semi; semi = strchr (semi + 1, ';')) {
++              for (semi = strchr (iter->data, ';'); semi; semi = strchr (semi + 1, ';')) {
+                       param = skip_lws (semi + 1);
+                       if (*param != 'q')
+                               continue;
+@@ -577,15 +576,15 @@ soup_header_parse_quality_list (const char *header, GSList **unacceptable)
+               if (qval == 0.0) {
+                       if (unacceptable) {
+                               *unacceptable = g_slist_prepend (*unacceptable,
+-                                                               item);
++                                                               g_steal_pointer (&iter->data));
+                       }
+               } else {
+-                      array[n].item = item;
++                      array[n].item = g_steal_pointer (&iter->data);
+                       array[n].qval = qval;
+                       n++;
+               }
+       }
+-      g_slist_free (unsorted);
++      g_slist_free_full (unsorted, g_free);
+       qsort (array, n, sizeof (QualityItem), sort_by_qval);
+       sorted = NULL;
+-- 
+GitLab
+
index a90f683cb8b2ef41b0725cf3084c47006217d323..67aa180612ea62a610349d81b9ed3eb578a1792a 100644 (file)
@@ -35,6 +35,7 @@ SRC_URI = "${GNOME_MIRROR}/libsoup/${SHRT_VER}/libsoup-${PV}.tar.xz \
            file://CVE-2025-32050.patch \
            file://CVE-2025-32052.patch \
            file://CVE-2025-32053.patch \
+           file://CVE-2025-46420.patch \
           "
 SRC_URI[sha256sum] = "ebdf90cf3599c11acbb6818a9d9e3fc9d2c68e56eb829b93962972683e1bf7c8"