Skip to content

Commit 61b7855

Browse files
authored
[MEDIUM] Patch glib for CVE-2025-4373 (microsoft#13978)
1 parent af41c86 commit 61b7855

File tree

6 files changed

+121
-13
lines changed

6 files changed

+121
-13
lines changed

SPECS/glib/CVE-2025-4373.patch

Lines changed: 104 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,104 @@
1+
From e52fbaf44f038b60f793e1933688e613e7e1974c Mon Sep 17 00:00:00 2001
2+
From: Aninda <[email protected]>
3+
Date: Mon, 9 Jun 2025 14:19:42 -0400
4+
Subject: [PATCH] Address CVE-2025-4373
5+
Upstream Patch Reference: https://gitlab.gnome.org/GNOME/glib/-/merge_requests/4588.patch
6+
---
7+
glib/gstring.c | 36 +++++++++++++++++++++++-------------
8+
1 file changed, 23 insertions(+), 13 deletions(-)
9+
10+
diff --git a/glib/gstring.c b/glib/gstring.c
11+
index 0a509e5..d6f8735 100644
12+
--- a/glib/gstring.c
13+
+++ b/glib/gstring.c
14+
@@ -424,8 +424,9 @@ g_string_insert_len (GString *string,
15+
return string;
16+
17+
if (len < 0)
18+
- len = strlen (val);
19+
- len_unsigned = len;
20+
+ len_unsigned = strlen (val);
21+
+ else
22+
+ len_unsigned = len;
23+
24+
if (pos < 0)
25+
pos_unsigned = string->len;
26+
@@ -723,10 +724,12 @@ g_string_insert_c (GString *string,
27+
g_string_maybe_expand (string, 1);
28+
29+
if (pos < 0)
30+
- pos = string->len;
31+
+ pos_unsigned = string->len;
32+
else
33+
- g_return_val_if_fail ((gsize) pos <= string->len, string);
34+
- pos_unsigned = pos;
35+
+ {
36+
+ pos_unsigned = pos;
37+
+ g_return_val_if_fail (pos_unsigned <= string->len, string);
38+
+ }
39+
40+
/* If not just an append, move the old stuff */
41+
if (pos_unsigned < string->len)
42+
@@ -759,6 +762,7 @@ g_string_insert_unichar (GString *string,
43+
gssize pos,
44+
gunichar wc)
45+
{
46+
+ gsize pos_unsigned;
47+
gint charlen, first, i;
48+
gchar *dest;
49+
50+
@@ -800,15 +804,18 @@ g_string_insert_unichar (GString *string,
51+
g_string_maybe_expand (string, charlen);
52+
53+
if (pos < 0)
54+
- pos = string->len;
55+
+ pos_unsigned = string->len;
56+
else
57+
- g_return_val_if_fail ((gsize) pos <= string->len, string);
58+
+ {
59+
+ pos_unsigned = pos;
60+
+ g_return_val_if_fail (pos_unsigned <= string->len, string);
61+
+ }
62+
63+
/* If not just an append, move the old stuff */
64+
- if ((gsize) pos < string->len)
65+
- memmove (string->str + pos + charlen, string->str + pos, string->len - pos);
66+
+ if (pos_unsigned < string->len)
67+
+ memmove (string->str + pos_unsigned + charlen, string->str + pos_unsigned, string->len - pos_unsigned);
68+
69+
- dest = string->str + pos;
70+
+ dest = string->str + pos_unsigned;
71+
/* Code copied from g_unichar_to_utf() */
72+
for (i = charlen - 1; i > 0; --i)
73+
{
74+
@@ -866,6 +873,7 @@ g_string_overwrite_len (GString *string,
75+
const gchar *val,
76+
gssize len)
77+
{
78+
+ gssize len_unsigned;
79+
gsize end;
80+
81+
g_return_val_if_fail (string != NULL, NULL);
82+
@@ -877,14 +885,16 @@ g_string_overwrite_len (GString *string,
83+
g_return_val_if_fail (pos <= string->len, string);
84+
85+
if (len < 0)
86+
- len = strlen (val);
87+
+ len_unsigned = strlen (val);
88+
+ else
89+
+ len_unsigned = len;
90+
91+
- end = pos + len;
92+
+ end = pos + len_unsigned;
93+
94+
if (end > string->len)
95+
g_string_maybe_expand (string, end - string->len);
96+
97+
- memcpy (string->str + pos, val, len);
98+
+ memcpy (string->str + pos, val, len_unsigned);
99+
100+
if (end > string->len)
101+
{
102+
--
103+
2.34.1
104+

SPECS/glib/glib.spec

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
Summary: Low-level libraries useful for providing data structure handling for C.
33
Name: glib
44
Version: 2.71.0
5-
Release: 5%{?dist}
5+
Release: 6%{?dist}
66
License: LGPLv2+
77
Vendor: Microsoft Corporation
88
Distribution: Mariner
@@ -14,6 +14,7 @@ Patch1: CVE-2023-29499.patch
1414
# This patch fixes 2 CVEs - CVE-2023-32643 and CVE-2023-32636
1515
Patch2: CVE-2023-32643-CVE-2023-32636.patch
1616
Patch3: CVE-2025-3360.patch
17+
Patch4: CVE-2025-4373.patch
1718
BuildRequires: cmake
1819
BuildRequires: gtk-doc
1920
BuildRequires: libffi-devel
@@ -127,6 +128,9 @@ touch %{buildroot}%{_libdir}/gio/modules/giomodule.cache
127128
%doc %{_datadir}/gtk-doc/html/*
128129

129130
%changelog
131+
* Mon Jun 09 2025 Aninda Pradhan <[email protected]> - 2.71.0-6
132+
- Patch CVE-2025-4373
133+
130134
* Wed Apr 16 2025 Archana Shettigar <[email protected]> - 2.71.0-5
131135
- Patch CVE-2025-3360
132136

toolkit/resources/manifests/package/pkggen_core_aarch64.txt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -199,7 +199,7 @@ libxml2-devel-2.10.4-8.cm2.aarch64.rpm
199199
docbook-dtd-xml-4.5-11.cm2.noarch.rpm
200200
docbook-style-xsl-1.79.1-14.cm2.noarch.rpm
201201
libsepol-3.2-2.cm2.aarch64.rpm
202-
glib-2.71.0-5.cm2.aarch64.rpm
202+
glib-2.71.0-6.cm2.aarch64.rpm
203203
libltdl-2.4.6-8.cm2.aarch64.rpm
204204
libltdl-devel-2.4.6-8.cm2.aarch64.rpm
205205
pcre-8.45-2.cm2.aarch64.rpm

toolkit/resources/manifests/package/pkggen_core_x86_64.txt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -199,7 +199,7 @@ libxml2-devel-2.10.4-8.cm2.x86_64.rpm
199199
docbook-dtd-xml-4.5-11.cm2.noarch.rpm
200200
docbook-style-xsl-1.79.1-14.cm2.noarch.rpm
201201
libsepol-3.2-2.cm2.x86_64.rpm
202-
glib-2.71.0-5.cm2.x86_64.rpm
202+
glib-2.71.0-6.cm2.x86_64.rpm
203203
libltdl-2.4.6-8.cm2.x86_64.rpm
204204
libltdl-devel-2.4.6-8.cm2.x86_64.rpm
205205
pcre-8.45-2.cm2.x86_64.rpm

toolkit/resources/manifests/package/toolchain_aarch64.txt

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -101,11 +101,11 @@ gdbm-lang-1.21-1.cm2.aarch64.rpm
101101
gettext-0.21-3.cm2.aarch64.rpm
102102
gettext-debuginfo-0.21-3.cm2.aarch64.rpm
103103
gfortran-11.2.0-8.cm2.aarch64.rpm
104-
glib-2.71.0-5.cm2.aarch64.rpm
105-
glib-debuginfo-2.71.0-5.cm2.aarch64.rpm
106-
glib-devel-2.71.0-5.cm2.aarch64.rpm
107-
glib-doc-2.71.0-5.cm2.noarch.rpm
108-
glib-schemas-2.71.0-5.cm2.aarch64.rpm
104+
glib-2.71.0-6.cm2.aarch64.rpm
105+
glib-debuginfo-2.71.0-6.cm2.aarch64.rpm
106+
glib-devel-2.71.0-6.cm2.aarch64.rpm
107+
glib-doc-2.71.0-6.cm2.noarch.rpm
108+
glib-schemas-2.71.0-6.cm2.aarch64.rpm
109109
glibc-2.35-7.cm2.aarch64.rpm
110110
glibc-debuginfo-2.35-7.cm2.aarch64.rpm
111111
glibc-devel-2.35-7.cm2.aarch64.rpm

toolkit/resources/manifests/package/toolchain_x86_64.txt

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -106,11 +106,11 @@ gdbm-lang-1.21-1.cm2.x86_64.rpm
106106
gettext-0.21-3.cm2.x86_64.rpm
107107
gettext-debuginfo-0.21-3.cm2.x86_64.rpm
108108
gfortran-11.2.0-8.cm2.x86_64.rpm
109-
glib-2.71.0-5.cm2.x86_64.rpm
110-
glib-debuginfo-2.71.0-5.cm2.x86_64.rpm
111-
glib-devel-2.71.0-5.cm2.x86_64.rpm
112-
glib-doc-2.71.0-5.cm2.noarch.rpm
113-
glib-schemas-2.71.0-5.cm2.x86_64.rpm
109+
glib-2.71.0-6.cm2.x86_64.rpm
110+
glib-debuginfo-2.71.0-6.cm2.x86_64.rpm
111+
glib-devel-2.71.0-6.cm2.x86_64.rpm
112+
glib-doc-2.71.0-6.cm2.noarch.rpm
113+
glib-schemas-2.71.0-6.cm2.x86_64.rpm
114114
glibc-2.35-7.cm2.x86_64.rpm
115115
glibc-debuginfo-2.35-7.cm2.x86_64.rpm
116116
glibc-devel-2.35-7.cm2.x86_64.rpm

0 commit comments

Comments
 (0)