commit: 35badf1f86696e71ae84d9437b250d8ae0192242 Author: Sam James <sam <AT> gentoo <DOT> org> AuthorDate: Tue Jan 6 07:01:13 2026 +0000 Commit: Sam James <sam <AT> gentoo <DOT> org> CommitDate: Tue Jan 6 07:14:26 2026 +0000 URL: https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=35badf1f
sys-apps/coreutils: fix cp SEEK_HOLE hang Closes: https://bugs.gentoo.org/968414 Signed-off-by: Sam James <sam <AT> gentoo.org> ...tils-9.9-r10.ebuild => coreutils-9.9-r1.ebuild} | 9 +++--- ...ils-9.9-r10.ebuild => coreutils-9.9-r11.ebuild} | 1 + .../files/coreutils-9.9-cp-SEEK_HOLE-loop.patch | 37 ++++++++++++++++++++++ 3 files changed, 43 insertions(+), 4 deletions(-) diff --git a/sys-apps/coreutils/coreutils-9.9-r10.ebuild b/sys-apps/coreutils/coreutils-9.9-r1.ebuild similarity index 96% copy from sys-apps/coreutils/coreutils-9.9-r10.ebuild copy to sys-apps/coreutils/coreutils-9.9-r1.ebuild index 331293db8eb4..fd1394f55a01 100644 --- a/sys-apps/coreutils/coreutils-9.9-r10.ebuild +++ b/sys-apps/coreutils/coreutils-9.9-r1.ebuild @@ -1,4 +1,4 @@ -# Copyright 1999-2025 Gentoo Authors +# Copyright 1999-2026 Gentoo Authors # Distributed under the terms of the GNU General Public License v2 EAPI=8 @@ -33,7 +33,7 @@ else verify-sig? ( mirror://gnu/${PN}/${P}.tar.xz.sig ) " - #KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~hppa ~loong ~m68k ~mips ~ppc ~ppc64 ~riscv ~s390 ~sparc ~x86" + KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~hppa ~loong ~m68k ~mips ~ppc ~ppc64 ~riscv ~s390 ~sparc ~x86" fi SRC_URI+=" !vanilla? ( https://dev.gentoo.org/~sam/distfiles/${CATEGORY}/${PN}/${MY_PATCH}.tar.xz )" @@ -83,7 +83,6 @@ RDEPEND+=" !sys-apps/mktemp !<app-forensics/tct-1.18-r1 !<net-fs/netatalk-2.0.3-r4 - !<sys-apps/shadow-4.19.0_rc1 " QA_CONFIG_IMPL_DECL_SKIP=( @@ -118,6 +117,7 @@ src_prepare() { local PATCHES=( "${FILESDIR}"/${PN}-9.5-skip-readutmp-test.patch # Upstream patches + "${FILESDIR}"/${PN}-9.9-cp-SEEK_HOLE-loop.patch ) if ! use vanilla && [[ -d "${WORKDIR}"/${MY_PATCH} ]] ; then @@ -159,9 +159,10 @@ src_configure() { --with-packager-version="${PVR} (p${PATCH_VER:-0})" --with-packager-bug-reports="https://bugs.gentoo.org/" # kill/uptime - procps + # groups/su - shadow # hostname - net-tools --enable-install-program="arch,$(usev hostname),$(usev kill)" - --enable-no-install-program="$(usev !hostname),$(usev !kill),su,uptime" + --enable-no-install-program="groups,$(usev !hostname),$(usev !kill),su,uptime" $(usev !caps --disable-libcap) $(use_enable nls) $(use_enable acl) diff --git a/sys-apps/coreutils/coreutils-9.9-r10.ebuild b/sys-apps/coreutils/coreutils-9.9-r11.ebuild similarity index 99% rename from sys-apps/coreutils/coreutils-9.9-r10.ebuild rename to sys-apps/coreutils/coreutils-9.9-r11.ebuild index 331293db8eb4..7cd6e5cab97d 100644 --- a/sys-apps/coreutils/coreutils-9.9-r10.ebuild +++ b/sys-apps/coreutils/coreutils-9.9-r11.ebuild @@ -118,6 +118,7 @@ src_prepare() { local PATCHES=( "${FILESDIR}"/${PN}-9.5-skip-readutmp-test.patch # Upstream patches + "${FILESDIR}"/${PN}-9.9-cp-SEEK_HOLE-loop.patch ) if ! use vanilla && [[ -d "${WORKDIR}"/${MY_PATCH} ]] ; then diff --git a/sys-apps/coreutils/files/coreutils-9.9-cp-SEEK_HOLE-loop.patch b/sys-apps/coreutils/files/coreutils-9.9-cp-SEEK_HOLE-loop.patch new file mode 100644 index 000000000000..f38b1bc06e0c --- /dev/null +++ b/sys-apps/coreutils/files/coreutils-9.9-cp-SEEK_HOLE-loop.patch @@ -0,0 +1,37 @@ +https://bugs.gentoo.org/968414 +https://cgit.git.savannah.gnu.org/cgit/coreutils.git/commit/?id=bd528f923482223649aa84be7d131e69356149da + +From bd528f923482223649aa84be7d131e69356149da Mon Sep 17 00:00:00 2001 +From: Pádraig Brady <[email protected]> +Date: Sun, 4 Jan 2026 12:45:46 +0000 +Subject: copy: fix possible infinite loop with SEEK_HOLE + +Commit v9.8-95-g4c0cf3864 intended to initialize +ext_start to src_pos, as was described at: +https://lists.gnu.org/r/coreutils/2025-11/msg00035.html +However ipos was inadvertently used, which is only +valid the first time through the loop. + +* src/copy-file-data.c (lseek_copy): Use scan_inference->hole_start +only with the initial offset passed to lseek_copy(). +* NEWS: Mention the bug fix. +Reported at https://github.com/coreutils/coreutils/issues/159 +--- + src/copy-file-data.c | 2 +- + 2 files changed, 6 insertions(+), 1 deletion(-) + +--- a/src/copy-file-data.c ++++ b/src/copy-file-data.c +@@ -338,7 +338,7 @@ lseek_copy (int src_fd, int dest_fd, char **abuf, idx_t buf_size, + for (off_t ext_start = scan_inference->ext_start; + 0 <= ext_start && ext_start < max_ipos; ) + { +- off_t ext_end = (ext_start == ipos ++ off_t ext_end = (ext_start == src_pos + ? scan_inference->hole_start + : lseek (src_fd, ext_start, SEEK_HOLE)); + if (0 <= ext_end) +-- +cgit v1.2.3 + +
