From 5d080387eead3b713ae6e98fb36dda7c0b184c4d Mon Sep 17 00:00:00 2001 From: Patrick McLean Date: Thu, 22 Feb 2024 11:57:17 -0800 Subject: sys-fs/multipath-tools: Revbump, fix segfault (bug #925189) Closes: https://bugs.gentoo.org/925189 Signed-off-by: Patrick McLean --- ...ll-pointer-dereference-in-uev_update_path.patch | 28 ++++++ .../multipath-tools-0.9.7-r1.ebuild | 103 +++++++++++++++++++++ 2 files changed, 131 insertions(+) create mode 100644 sys-fs/multipath-tools/files/multipath-tools-0.9.7-null-pointer-dereference-in-uev_update_path.patch create mode 100644 sys-fs/multipath-tools/multipath-tools-0.9.7-r1.ebuild (limited to 'sys-fs/multipath-tools') diff --git a/sys-fs/multipath-tools/files/multipath-tools-0.9.7-null-pointer-dereference-in-uev_update_path.patch b/sys-fs/multipath-tools/files/multipath-tools-0.9.7-null-pointer-dereference-in-uev_update_path.patch new file mode 100644 index 000000000000..0210563bd7c0 --- /dev/null +++ b/sys-fs/multipath-tools/files/multipath-tools-0.9.7-null-pointer-dereference-in-uev_update_path.patch @@ -0,0 +1,28 @@ +From fc8b102c666d7fbad9242dea43a64941399a1c0d Mon Sep 17 00:00:00 2001 +From: Benjamin Marzinski +Date: Tue, 16 Jan 2024 20:19:11 -0500 +Subject: [PATCH] multipathd: fix null pointer dereference in uev_update_path + +The Auto-resize code added a check that deferences pp->mpp without +checking that it's non-NULL. Fix it. + +Fixes: 981b83ad1 ("multipathd: Add auto_resize config option") +Signed-off-by: Benjamin Marzinski +Reviewed-by: Martin Wilck +--- + multipathd/main.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/multipathd/main.c b/multipathd/main.c +index 74f6cd92..fbc3f8da 100644 +--- a/multipathd/main.c ++++ b/multipathd/main.c +@@ -1630,7 +1630,7 @@ uev_update_path (struct uevent *uev, struct vectors * vecs) + } + } + } +- if (auto_resize != AUTO_RESIZE_NEVER && ++ if (auto_resize != AUTO_RESIZE_NEVER && mpp && + !mpp->wait_for_udev) { + struct pathgroup *pgp; + struct path *pp2; diff --git a/sys-fs/multipath-tools/multipath-tools-0.9.7-r1.ebuild b/sys-fs/multipath-tools/multipath-tools-0.9.7-r1.ebuild new file mode 100644 index 000000000000..d0757b9e83ff --- /dev/null +++ b/sys-fs/multipath-tools/multipath-tools-0.9.7-r1.ebuild @@ -0,0 +1,103 @@ +# Copyright 1999-2024 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +EAPI=8 + +inherit flag-o-matic linux-info systemd tmpfiles toolchain-funcs udev + +DESCRIPTION="Device mapper target autoconfig" +HOMEPAGE="http://christophe.varoqui.free.fr/" +SRC_URI="https://github.com/opensvc/${PN}/archive/refs/tags/${PV}.tar.gz -> ${P}.tar.gz" + +LICENSE="GPL-2" +SLOT="0" +KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~ia64 ~loong ~ppc ~ppc64 ~riscv ~x86" +IUSE="systemd test" +RESTRICT="!test? ( test )" + +RDEPEND=" + dev-libs/json-c:= + dev-libs/libaio + dev-libs/userspace-rcu:= + >=sys-fs/lvm2-2.02.45 + sys-libs/readline:= + >=virtual/libudev-232-r3 + systemd? ( sys-apps/systemd ) +" +DEPEND=" + ${RDEPEND} + test? ( dev-util/cmocka ) +" +BDEPEND="virtual/pkgconfig" + +CONFIG_CHECK="~DM_MULTIPATH" + +PATCHES=( + "${FILESDIR}"/${PN}-0.9.7-remove-Werror.patch + "${FILESDIR}"/${P}-null-pointer-dereference-in-uev_update_path.patch +) + +myemake() { + local myemakeargs=( + prefix="${EPREFIX}" + usr_prefix="${EPREFIX}/usr" + LIB="$(get_libdir)" + RUN=run + plugindir="${EPREFIX}/$(get_libdir)/multipath" + unitdir="$(systemd_get_systemunitdir)" + libudevdir="${EPREFIX}$(get_udevdir)" + GENTOO_CFLAGS="${CFLAGS}" + GENTOO_CPPFLAGS="${CPPFLAGS}" + FORTIFY_OPT= + OPTFLAGS= + FAKEVAR=1 + V=1 + ) + + emake "${myemakeargs[@]}" "$@" +} + +src_prepare() { + default + + sed -r -i -e '/^(CPPFLAGS|CFLAGS)\>/s,^(CPPFLAGS|CFLAGS)\>[[:space:]]+:=,\1 := $(GENTOO_\1),' \ + "${S}"/Makefile.inc || die +} + +src_compile() { + tc-export CC + # Breaks with always_inline + filter-flags -fno-semantic-interposition + myemake +} + +src_test() { + myemake test +} + +src_install() { + dodir /sbin + + myemake DESTDIR="${ED}" install + + einstalldocs + + newinitd "${FILESDIR}"/multipathd-r1.rc multipathd + newinitd "${FILESDIR}"/multipath.rc multipath + + find "${ED}" -type f -name '*.la' -delete || die +} + +pkg_postinst() { + tmpfiles_process /usr/lib/tmpfiles.d/multipath.conf + udev_reload + + if [[ -z ${REPLACING_VERSIONS} ]] ; then + elog "If you need multipath on your system, you must" + elog "add 'multipath' into your boot runlevel!" + fi +} + +pkg_postrm() { + udev_reload +} -- cgit v1.2.3-65-gdbad