commit:     ce989574f5a86618ea4c389c9e1810c03c8b6a5e
Author:     Sam James <sam <AT> gentoo <DOT> org>
AuthorDate: Wed Jun 18 04:32:14 2025 +0000
Commit:     Sam James <sam <AT> gentoo <DOT> org>
CommitDate: Wed Jun 18 04:33:24 2025 +0000
URL:        https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=ce989574

sys-fs/udisks: patch CVE-2025-6019

Depend on a fixed version of libblockdev too.

Bug: https://bugs.gentoo.org/958338
Bug: https://bugs.gentoo.org/958339
Signed-off-by: Sam James <sam <AT> gentoo.org>

 .../udisks/files/udisks-2.10.1-CVE-2025-6019.patch |  43 ++++++
 sys-fs/udisks/udisks-2.10.1-r4.ebuild              | 149 +++++++++++++++++++++
 2 files changed, 192 insertions(+)

diff --git a/sys-fs/udisks/files/udisks-2.10.1-CVE-2025-6019.patch 
b/sys-fs/udisks/files/udisks-2.10.1-CVE-2025-6019.patch
new file mode 100644
index 000000000000..b4d468f6120a
--- /dev/null
+++ b/sys-fs/udisks/files/udisks-2.10.1-CVE-2025-6019.patch
@@ -0,0 +1,43 @@
+https://bugs.gentoo.org/958339
+https://www.openwall.com/lists/oss-security/2025/06/17/5
+https://www.openwall.com/lists/oss-security/2025/06/17/5/2
+
+From 0007d5616f4dbc9ccd65b9094ffc18c6f776d06a Mon Sep 17 00:00:00 2001
+From: Tomas Bzatek <[email protected]>
+Date: Wed, 4 Jun 2025 15:26:46 +0200
+Subject: [PATCH] udiskslinuxfilesystemhelpers: Mount private mounts with
+ 'nodev,nosuid'
+
+The private mount done in take_filesystem_ownership() should always
+default to 'nodev,nosuid' for security and 'errors=remount-ro' for
+selected filesystem to handle corrupted filesystem. This is consistent
+with mount options calculation for regular mounts.
+--- a/src/udiskslinuxfilesystemhelpers.c
++++ b/src/udiskslinuxfilesystemhelpers.c
+@@ -123,6 +123,7 @@ take_filesystem_ownership (const gchar  *device,
+ 
+ {
+   gchar *mountpoint = NULL;
++  const gchar *mount_opts;
+   GError *local_error = NULL;
+   gboolean unmount = FALSE;
+   gboolean success = TRUE;
+@@ -151,8 +152,15 @@ take_filesystem_ownership (const gchar  *device,
+               goto out;
+             }
+ 
++          mount_opts = "nodev,nosuid";
++          if (g_strcmp0 (fstype, "ext2") == 0 ||
++              g_strcmp0 (fstype, "ext3") == 0 ||
++              g_strcmp0 (fstype, "ext4") == 0 ||
++              g_strcmp0 (fstype, "jfs") == 0)
++            mount_opts = "nodev,nosuid,errors=remount-ro";
++
+           /* TODO: mount to a private mount namespace */
+-          if (!bd_fs_mount (device, mountpoint, fstype, NULL, NULL, 
&local_error))
++          if (!bd_fs_mount (device, mountpoint, fstype, mount_opts, NULL, 
&local_error))
+             {
+               g_set_error (error, UDISKS_ERROR, UDISKS_ERROR_FAILED,
+                            "Cannot mount %s at %s: %s",
+-- 
+2.49.0

diff --git a/sys-fs/udisks/udisks-2.10.1-r4.ebuild 
b/sys-fs/udisks/udisks-2.10.1-r4.ebuild
new file mode 100644
index 000000000000..a5b2abc2150f
--- /dev/null
+++ b/sys-fs/udisks/udisks-2.10.1-r4.ebuild
@@ -0,0 +1,149 @@
+# Copyright 1999-2025 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+inherit autotools bash-completion-r1 linux-info systemd tmpfiles udev xdg-utils
+
+DESCRIPTION="Daemon providing interfaces to work with storage devices"
+HOMEPAGE="https://www.freedesktop.org/wiki/Software/udisks";
+SRC_URI="https://github.com/storaged-project/udisks/releases/download/${P}/${P}.tar.bz2";
+
+LICENSE="LGPL-2+ GPL-2+"
+SLOT="2"
+KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~loong ~mips ~ppc64 ~riscv ~x86"
+IUSE="acl +daemon debug elogind +introspection lvm nls selinux systemd"
+
+REQUIRED_USE="
+       ?? ( elogind systemd )
+       elogind? ( daemon )
+       systemd? ( daemon )
+"
+
+COMMON_DEPEND="
+       >=sys-auth/polkit-0.114[daemon(+)]
+       >=sys-libs/libblockdev-3.3.0:=[cryptsetup,lvm?,nvme]
+       virtual/udev
+       acl? ( virtual/acl )
+       daemon? (
+               >=dev-libs/glib-2.68:2
+               >=dev-libs/libatasmart-0.19
+               >=dev-libs/libgudev-165:=
+       )
+       elogind? ( >=sys-auth/elogind-219 )
+       introspection? ( >=dev-libs/gobject-introspection-1.30:= )
+       lvm? ( sys-fs/lvm2 )
+       systemd? ( >=sys-apps/systemd-209 )
+"
+# util-linux -> mount, umount, swapon, swapoff (see also #403073)
+RDEPEND="${COMMON_DEPEND}
+       >=sys-block/parted-3
+       >=sys-apps/util-linux-2.30
+       selinux? ( sec-policy/selinux-devicekit )
+"
+DEPEND="${COMMON_DEPEND}
+       >=sys-kernel/linux-headers-3.1
+"
+BDEPEND="
+       app-text/docbook-xsl-stylesheets
+       >=dev-util/gdbus-codegen-2.32
+       >=dev-build/gtk-doc-am-1.3
+       virtual/pkgconfig
+       nls? ( >=sys-devel/gettext-0.19.8 )
+       dev-libs/gobject-introspection-common
+       dev-build/autoconf-archive
+"
+# If adding a eautoreconf, then these might be needed at buildtime:
+# dev-libs/gobject-introspection-common
+# dev-build/autoconf-archive
+
+DOCS=( AUTHORS HACKING NEWS README.md )
+
+PATCHES=(
+       "${FILESDIR}"/${P}-BLKRRPART_harder.patch
+       "${FILESDIR}"/${P}-targetcli_config.json_netif_timeout.patch
+       "${FILESDIR}"/${P}-udiskslinuxmanager_use_after_free.patch
+       "${FILESDIR}"/${P}-udiskslinuxblock_survive_missing_fstab.patch
+
+       "${FILESDIR}"/${PN}-2.10.1-slibtool-export-dynamic.patch
+       "${FILESDIR}"/${PN}-2.10.1-CVE-2025-6019.patch
+)
+
+pkg_setup() {
+       # Listing only major arch's here to avoid tracking kernel's defconfig
+       if use amd64 || use arm || use ppc || use ppc64 || use x86; then
+               CONFIG_CHECK="~!IDE" #319829
+               CONFIG_CHECK+=" ~TMPFS_POSIX_ACL" #412377
+               CONFIG_CHECK+=" ~NLS_UTF8" #425562
+               kernel_is lt 3 10 && CONFIG_CHECK+=" ~USB_SUSPEND" #331065, 
#477278
+               linux-info_pkg_setup
+       fi
+}
+
+src_prepare() {
+       xdg_environment_reset
+       default
+
+       if ! use systemd ; then
+               sed -i -e 's:libsystemd-login:&disable:' configure || die
+       fi
+
+       # Added for bug # 782061
+       eautoreconf
+}
+
+src_configure() {
+       local myeconfargs=(
+               --enable-btrfs
+               --disable-gtk-doc
+               --disable-static
+               --localstatedir="${EPREFIX}"/var
+               --with-html-dir="${EPREFIX}"/usr/share/gtk-doc/html
+               --with-modprobedir="${EPREFIX}"/lib/modprobe.d
+               --with-systemdsystemunitdir="$(systemd_get_systemunitdir)"
+               --with-tmpfilesdir="${EPREFIX}"/usr/lib/tmpfiles.d
+               --with-udevdir="${EPREFIX}$(get_udevdir)"
+               $(use_enable acl)
+               $(use_enable daemon)
+               $(use_enable debug)
+               $(use_enable introspection)
+               $(use_enable lvm lvm2)
+               $(use_enable nls)
+       )
+       econf "${myeconfargs[@]}"
+}
+
+src_install() {
+       default
+       find "${ED}" -type f -name "*.la" -delete || die
+       keepdir /var/lib/udisks2 #383091
+
+       rm -rf "${ED}"/usr/share/bash-completion
+       dobashcomp data/completions/udisksctl
+}
+
+pkg_preinst() {
+       # Remove gtk-doc symlink, #597628
+       if [[ -L "${EROOT}"/usr/share/gtk-doc/html/udisks2 ]]; then
+               rm "${EROOT}"/usr/share/gtk-doc/html/udisks2 || die
+       fi
+}
+
+pkg_postinst() {
+       udev_reload
+
+       # TODO: obsolete with tmpfiles_process?
+       # mkdir -p "${EROOT}"/run #415987
+
+       tmpfiles_process udisks2.conf
+
+       # See pkg_postinst() of >=sys-apps/baselayout-2.1-r1. Keep in sync?
+       if ! grep -qs "^tmpfs.*/run " "${EROOT}"/proc/mounts ; then
+               echo
+               ewarn "You should reboot the system now to get /run mounted 
with tmpfs!"
+       fi
+}
+
+pkg_postrm() {
+       udev_reload
+}

Reply via email to