diff --git a/backport-CVE-2025-26595.patch b/backport-CVE-2025-26595.patch new file mode 100644 index 0000000..ec3b024 --- /dev/null +++ b/backport-CVE-2025-26595.patch @@ -0,0 +1,58 @@ +From 65977c33a6735b0ffc7d2c691243452f75c1f68c Mon Sep 17 00:00:00 2001 +From: Olivier Fourdan +Date: Wed, 27 Nov 2024 14:41:45 +0100 +Subject: [PATCH] xkb: Fix buffer overflow in XkbVModMaskText() + +The code in XkbVModMaskText() allocates a fixed sized buffer on the +stack and copies the virtual mod name. + +There's actually two issues in the code that can lead to a buffer +overflow. + +First, the bound check mixes pointers and integers using misplaced +parenthesis, defeating the bound check. + +But even though, if the check fails, the data is still copied, so the +stack overflow will occur regardless. + +Change the logic to skip the copy entirely if the bound check fails. + +(cherry picked from xorg/xserver@11fcda8753e994e15eb915d28cf487660ec8e722) + +Signed-off-by: Olivier Fourdan +Reviewed-by: Peter Hutterer +Signed-off-by: Alan Coopersmith +--- + src/xkbtext.c | 16 ++++++++-------- + 1 file changed, 8 insertions(+), 8 deletions(-) + +diff --git a/src/xkbtext.c b/src/xkbtext.c +index 4459ca7..59429b2 100644 +--- a/src/xkbtext.c ++++ b/src/xkbtext.c +@@ -190,14 +190,14 @@ XkbVModMaskText(Display * dpy, + len = strlen(tmp) + 1 + (str == buf ? 0 : 1); + if (format == XkbCFile) + len += 4; +- if ((str - (buf + len)) <= BUFFER_SIZE) { +- if (str != buf) { +- if (format == XkbCFile) +- *str++ = '|'; +- else +- *str++ = '+'; +- len--; +- } ++ if ((str - buf) + len > BUFFER_SIZE) ++ continue; /* Skip */ ++ if (str != buf) { ++ if (format == XkbCFile) ++ *str++ = '|'; ++ else ++ *str++ = '+'; ++ len--; + } + if (format == XkbCFile) + sprintf(str, "%sMask", tmp); +-- +GitLab + diff --git a/libxkbfile.spec b/libxkbfile.spec index 68f55e5..cd7f0cb 100644 --- a/libxkbfile.spec +++ b/libxkbfile.spec @@ -1,13 +1,15 @@ %define lname libxkbfile1 Name: libxkbfile Version: 1.1.2 -Release: 1 +Release: 2 Summary: X11 keyboard file manipulation library License: MIT URL: https://www.x.org Source0: https://www.x.org/releases/individual/lib/%{name}-%{version}.tar.xz Source1: baselibs.conf +Patch6000: backport-CVE-2025-26595.patch + BuildRequires: autoconf >= 2.60 automake libtool pkgconfig pkgconfig(kbproto) pkgconfig(x11) pkgconfig(xorg-macros) >= 1.8 %description @@ -52,6 +54,9 @@ find %{buildroot} -type f -name "*.la" -delete -print %{_libdir}/%{name}.so %changelog +* Thu Feb 27 2025 lingsheng - 1.1.2-2 +- fix CVE-2025-26595 + * Tue Feb 14 2023 lilong - 1.1.2-1 - Upgrade to 1.1.2