(address . guix-patches@gnu.org)(name . Leo Nikkilä)(address . hello@lnikki.la)
Fixes a vulnerability in libcue that can result in a nasty RCE exploit
under GNOME:
* gnu/packages/patches/libcue-CVE-2023-43641.patch: New file.
* gnu/local.mk (dist_patch_DATA): Add it.
* gnu/packages/cdrom.scm (libcue)[source]: Use it.
---
gnu/local.mk | 1 +
gnu/packages/cdrom.scm | 3 ++-
.../patches/libcue-CVE-2023-43641.patch | 18 ++++++++++++++++++
3 files changed, 21 insertions(+), 1 deletion(-)
create mode 100644 gnu/packages/patches/libcue-CVE-2023-43641.patch
Toggle diff (54 lines)
diff --git a/gnu/local.mk b/gnu/local.mk
index c481aa153a..ff40cf7a9b 100644
--- a/gnu/local.mk
+++ b/gnu/local.mk
@@ -1517,6 +1517,7 @@ dist_patch_DATA = \
%D%/packages/patches/libcanberra-sound-theme-freedesktop.patch \
%D%/packages/patches/libcanberra-wayland-crash.patch \
%D%/packages/patches/libcroco-CVE-2020-12825.patch \
+ %D%/packages/patches/libcue-CVE-2023-43641.patch \
%D%/packages/patches/libcyaml-libyaml-compat.patch \
%D%/packages/patches/libexpected-use-provided-catch2.patch \
%D%/packages/patches/libgda-cve-2021-39359.patch \
diff --git a/gnu/packages/cdrom.scm b/gnu/packages/cdrom.scm
index de31002ac1..d06fe068db 100644
--- a/gnu/packages/cdrom.scm
+++ b/gnu/packages/cdrom.scm
@@ -560,7 +560,8 @@ (define-public libcue
(file-name (git-file-name name version))
(sha256
(base32
- "1iqw4n01rv2jyk9lksagyxj8ml0kcfwk67n79zy1r6zv1xfp5ywm"))))
+ "1iqw4n01rv2jyk9lksagyxj8ml0kcfwk67n79zy1r6zv1xfp5ywm"))
+ (patches (search-patches "libcue-CVE-2023-43641.patch"))))
(build-system cmake-build-system)
(arguments
`(#:configure-flags '("-DBUILD_SHARED_LIBS=ON")))
diff --git a/gnu/packages/patches/libcue-CVE-2023-43641.patch b/gnu/packages/patches/libcue-CVE-2023-43641.patch
new file mode 100644
index 0000000000..640c197981
--- /dev/null
+++ b/gnu/packages/patches/libcue-CVE-2023-43641.patch
@@ -0,0 +1,18 @@
+Fix CVE-2023-43641:
+https://github.blog/2023-10-09-coordinated-disclosure-1-click-rce-on-gnome-cve-2023-43641/
+
+Patch from the disclosure post.
+
+diff --git a/cd.c b/cd.c
+index cf77a18..4bbea19 100644
+--- a/cd.c
++++ b/cd.c
+@@ -339,7 +339,7 @@ track_get_rem(const Track* track)
+
+ void track_set_index(Track *track, int i, long ind)
+ {
+- if (i > MAXINDEX) {
++ if (i < 0 || i > MAXINDEX) {
+ fprintf(stderr, "too many indexes\n");
+ return;
+ }
base-commit: 7937c8827b8d23347a3159b4696335bd19fc17aa
--
2.41.0