From 3bd4a09f225394539e9dcc913080b06035d12cb8 Mon Sep 17 00:00:00 2001 From: Nicolas PARLANT Date: Wed, 22 Apr 2026 12:46:08 +0200 Subject: [PATCH] media-sound/audacious: fix overflow and test fix an overflow revealed by the testsuite without LTO Closes: https://bugs.gentoo.org/972499 Signed-off-by: Nicolas PARLANT Part-of: https://codeberg.org/gentoo/gentoo/pulls/700 Merges: https://codeberg.org/gentoo/gentoo/pulls/700 Signed-off-by: Sam James --- .../audacious/audacious-4.5.1-r1.ebuild | 95 +++++++++++++++++++ .../audacious-4.5.1-fix_intmin_overflow.patch | 17 ++++ 2 files changed, 112 insertions(+) create mode 100644 media-sound/audacious/audacious-4.5.1-r1.ebuild create mode 100644 media-sound/audacious/files/audacious-4.5.1-fix_intmin_overflow.patch diff --git a/media-sound/audacious/audacious-4.5.1-r1.ebuild b/media-sound/audacious/audacious-4.5.1-r1.ebuild new file mode 100644 index 0000000000000..714fc901ab794 --- /dev/null +++ b/media-sound/audacious/audacious-4.5.1-r1.ebuild @@ -0,0 +1,95 @@ +# Copyright 1999-2026 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +EAPI=8 + +inherit meson xdg + +DESCRIPTION="Lightweight and versatile audio player" +HOMEPAGE="https://audacious-media-player.org/" +SRC_URI="https://distfiles.audacious-media-player.org/${P}.tar.bz2" + +LICENSE="BSD-2" +SLOT="0" +KEYWORDS="~amd64 ~ppc64 ~riscv ~x86" +IUSE="gtk qt6 test" +REQUIRED_USE="test? ( qt6 )" +RESTRICT="!test? ( test )" + +BDEPEND=" + >=dev-util/gdbus-codegen-2.80.5-r1 + sys-devel/gettext + virtual/pkgconfig +" +DEPEND=" + dev-libs/glib:2 + virtual/freedesktop-icon-theme + gtk? ( + x11-libs/cairo + x11-libs/gdk-pixbuf:2 + >=x11-libs/gtk+-3.18:3 + x11-libs/pango + ) + qt6? ( + dev-qt/qtbase:6[gui,widgets] + dev-qt/qtsvg:6 + ) +" +RDEPEND="${DEPEND}" +PDEPEND="~media-plugins/audacious-plugins-${PV}[gtk=,qt6=]" + +PATCHES=( + # Avoid superfluous handling for X11/Wayland with gtk+, warn in pkg_postinst instead. + "${FILESDIR}"/${PN}-4.5.1-rm_gdk_symbols.patch + + # from upstream, see #972499 + "${FILESDIR}"/${P}-fix_intmin_overflow.patch +) + +src_configure() { + # D-Bus is a mandatory dependency. Remote control, + # session management and some plugins depend on this. + # Building without D-Bus is *unsupported* and a USE-flag + # will not be added due to the bug reports that will result. + # Bugs #197894, #199069, #207330, #208606 + local emesonargs=( + -Ddbus=true + $(meson_use qt6 qt) + -Dqt5=false + $(meson_use gtk) + -Dgtk2=false + -Dlibarchive=false + -Dbuildstamp="Gentoo ${P}" + -Dvalgrind=false + ) + meson_src_configure + + if use test; then + emesonargs=() + EMESON_SOURCE="${S}"/src/libaudcore/tests \ + BUILD_DIR="${WORKDIR}"/${P}-libaudcore_tests-build \ + meson_src_configure + fi +} + +src_compile() { + meson_src_compile + + if use test; then + EMESON_SOURCE="${S}"/src/libaudcore/tests \ + BUILD_DIR="${WORKDIR}"/${P}-libaudcore_tests-build \ + meson_src_compile + fi +} + +src_test() { + BUILD_DIR="${WORKDIR}"/${P}-libaudcore_tests-build meson_src_test +} + +pkg_postinst() { + if use gtk || use qt6; then + ewarn "Audacious without X11/XWayland is unsupported." + ewarn "Especially the Winamp interface is not usable yet on Wayland." + fi + xdg_pkg_postinst +} diff --git a/media-sound/audacious/files/audacious-4.5.1-fix_intmin_overflow.patch b/media-sound/audacious/files/audacious-4.5.1-fix_intmin_overflow.patch new file mode 100644 index 0000000000000..055979c2b3e54 --- /dev/null +++ b/media-sound/audacious/files/audacious-4.5.1-fix_intmin_overflow.patch @@ -0,0 +1,17 @@ +backport https://github.com/audacious-media-player/audacious/commit/6ffe0b6.patch +https://bugs.gentoo.org/972499 +audcore: Prevent undefined behavior for integer conversions. +--- a/src/libaudcore/audstrings.cc ++++ b/src/libaudcore/audstrings.cc +@@ -1121,8 +1121,10 @@ EXPORT double str_to_double(const char * string) + + EXPORT void str_insert_int(StringBuf & string, int pos, int val) + { ++ unsigned absval = val; + bool neg = (val < 0); +- unsigned absval = neg ? -val : val; ++ if (neg) ++ absval = -absval; + + int digits = digits_for(absval); + int len = (neg ? 1 : 0) + digits;