diff options
Diffstat (limited to 'sys-process/procps')
| -rw-r--r-- | sys-process/procps/Manifest | 1 | ||||
| -rw-r--r-- | sys-process/procps/files/procps-3.3.16-SC_ARG_MAX_sanity_check.patch | 60 | ||||
| -rw-r--r-- | sys-process/procps/procps-3.3.16-r3.ebuild (renamed from sys-process/procps/procps-3.3.15-r1.ebuild) | 52 |
3 files changed, 90 insertions, 23 deletions
diff --git a/sys-process/procps/Manifest b/sys-process/procps/Manifest index c5db62714874..8314da21d26b 100644 --- a/sys-process/procps/Manifest +++ b/sys-process/procps/Manifest @@ -1,2 +1 @@ -DIST procps-ng-3.3.15.tar.xz 904416 BLAKE2B 9fc1384df1d51a13bdf3aaad173160a11c5a7e016a8c397a076b5115e350d2c6fd8ff8d9ad5d83b959020bcd6a1ef9e1bca02e9a63d56881816c5c7d7c9a8bc3 SHA512 bc83ccc1941e7be8266588fdfbba17e2424b30163a215873ee6dee96215d66249f5d5e46fec2278d030b42bd7599861c4878360042dacec4c221ce411453747c DIST procps-ng-3.3.16.tar.xz 859736 BLAKE2B fbacc1edb0711cda0fecbf5f589c8cc18bd74f0430866e946f7c4612b78f383b9299840ab7fa5bbc65c581cc9484dbb37b111c493cf88f55ba247a343fd0c80d SHA512 d83da472df256b188c32082632202e7f8ebd1b161082387760876ae34d50221b3682299a2816a7d6a29afb40322743c31b87d92ca299c2944a6b55e50736d367 diff --git a/sys-process/procps/files/procps-3.3.16-SC_ARG_MAX_sanity_check.patch b/sys-process/procps/files/procps-3.3.16-SC_ARG_MAX_sanity_check.patch new file mode 100644 index 000000000000..1b85c2c855f1 --- /dev/null +++ b/sys-process/procps/files/procps-3.3.16-SC_ARG_MAX_sanity_check.patch @@ -0,0 +1,60 @@ +From bb96fc42956c9ed926a1b958ab715f8b4a663dec Mon Sep 17 00:00:00 2001 +From: Craig Small <csmall@dropbear.xyz> +Date: Sun, 5 Jan 2020 15:05:55 +1100 +Subject: [PATCH] pgrep: check sanity of SC_ARG_MAX + +A kernel change means we cannot trust what sysconf(SC_ARG_MAX) +returns. We clamp it so its more than 4096 and less than 128*1024 +which is what findutils does. + +References: + procps-ng/procps#152 + https://git.savannah.gnu.org/cgit/findutils.git/tree/lib/buildcmd.c#n535 + https://lwn.net/Articles/727862/ +--- + pgrep.c | 22 +++++++++++++++++++++- + 1 file changed, 21 insertions(+), 1 deletion(-) + +diff --git a/pgrep.c b/pgrep.c +index 01563db..bde7448 100644 +--- a/pgrep.c ++++ b/pgrep.c +@@ -485,6 +485,26 @@ static regex_t * do_regcomp (void) + return preg; + } + ++/* ++ * SC_ARG_MAX used to return the maximum size a command line can be ++ * however changes to the kernel mean this can be bigger than we can ++ * alloc. Clamp it to 128kB like xargs and friends do ++ * Should also not be smaller than POSIX_ARG_MAX which is 4096 ++ */ ++static size_t get_arg_max(void) ++{ ++#define MIN_ARG_SIZE 4096u ++#define MAX_ARG_SIZE (128u * 1024u) ++ ++ size_t val = sysconf(_SC_ARG_MAX); ++ ++ if (val < MIN_ARG_SIZE) ++ val = MIN_ARG_SIZE; ++ if (val > MAX_ARG_SIZE) ++ val = MAX_ARG_SIZE; ++ ++ return val; ++} + static struct el * select_procs (int *num) + { + PROCTAB *ptp; +@@ -497,7 +517,7 @@ static struct el * select_procs (int *num) + regex_t *preg; + pid_t myself = getpid(); + struct el *list = NULL; +- long cmdlen = sysconf(_SC_ARG_MAX) * sizeof(char); ++ long cmdlen = get_arg_max() * sizeof(char); + char *cmdline = xmalloc(cmdlen); + char *cmdsearch = xmalloc(cmdlen); + char *cmdoutput = xmalloc(cmdlen); +-- +GitLab + diff --git a/sys-process/procps/procps-3.3.15-r1.ebuild b/sys-process/procps/procps-3.3.16-r3.ebuild index 1626e128d243..1c32b4948ce4 100644 --- a/sys-process/procps/procps-3.3.15-r1.ebuild +++ b/sys-process/procps/procps-3.3.16-r3.ebuild @@ -1,25 +1,25 @@ -# Copyright 1999-2020 Gentoo Authors +# Copyright 1999-2021 Gentoo Authors # Distributed under the terms of the GNU General Public License v2 -EAPI=6 +EAPI=7 -inherit toolchain-funcs flag-o-matic usr-ldscript +inherit toolchain-funcs flag-o-matic multilib-minimal usr-ldscript DESCRIPTION="standard informational utilities and process-handling tools" HOMEPAGE="https://sourceforge.net/projects/procps-ng/ https://gitlab.com/procps-ng/procps" SRC_URI="mirror://sourceforge/${PN}-ng/${PN}-ng-${PV}.tar.xz" LICENSE="GPL-2" -SLOT="0/6" # libprocps.so -KEYWORDS="~alpha amd64 arm arm64 hppa ~ia64 ~m68k ~mips ppc ppc64 ~riscv s390 sparc x86 ~amd64-linux ~x86-linux" +SLOT="0/8" # libprocps.so +KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~hppa ~ia64 ~m68k ~mips ~ppc ~ppc64 ~riscv ~s390 ~sparc ~x86 ~amd64-linux ~x86-linux" IUSE="elogind +kill modern-top +ncurses nls selinux static-libs systemd test unicode" RESTRICT="!test? ( test )" COMMON_DEPEND=" elogind? ( sys-auth/elogind ) ncurses? ( >=sys-libs/ncurses-5.7-r7:=[unicode?] ) - selinux? ( sys-libs/libselinux ) - systemd? ( sys-apps/systemd ) + selinux? ( sys-libs/libselinux[${MULTILIB_USEDEP}] ) + systemd? ( sys-apps/systemd[${MULTILIB_USEDEP}] ) " DEPEND="${COMMON_DEPEND} elogind? ( virtual/pkgconfig ) @@ -32,7 +32,8 @@ RDEPEND=" !sys-apps/coreutils[kill] !sys-apps/util-linux[kill] ) - !<sys-apps/sysvinit-2.88-r6 + !<app-i18n/man-pages-de-2.12-r1 + !<app-i18n/man-pages-pl-0.7-r1 " S="${WORKDIR}/${PN}-ng-${PV}" @@ -42,39 +43,46 @@ PATCHES=( "${FILESDIR}"/${PN}-3.3.12-proc-tests.patch # 583036 # Upstream fixes + "${FILESDIR}"/${P}-toprc_backwards_compatibility.patch #711676 + "${FILESDIR}"/${P}-SC_ARG_MAX_sanity_check.patch #767217 ) -src_configure() { +multilib_src_configure() { # http://www.freelists.org/post/procps/PATCH-enable-transparent-large-file-support append-lfs-flags #471102 local myeconfargs=( - $(use_with elogind) - $(use_enable kill) - $(use_enable modern-top) - $(use_with ncurses) + $(multilib_native_use_with elogind) # No elogind multilib support + $(multilib_native_use_enable kill) + $(multilib_native_use_enable modern-top) + $(multilib_native_use_with ncurses) $(use_enable nls) $(use_enable selinux libselinux) $(use_enable static-libs static) $(use_with systemd) $(use_enable unicode watch8bit) ) - econf "${myeconfargs[@]}" + ECONF_SOURCE="${S}" econf "${myeconfargs[@]}" } -src_test() { +multilib_src_test() { emake check </dev/null #461302 } -src_install() { +multilib_src_install() { default #dodoc sysctl.conf - dodir /bin - mv "${ED%/}"/usr/bin/ps "${ED%/}"/bin/ || die - if use kill; then - mv "${ED%/}"/usr/bin/kill "${ED}"/bin/ || die + if multilib_is_native_abi ; then + dodir /bin + mv "${ED}"/usr/bin/ps "${ED}"/bin/ || die + if use kill ; then + mv "${ED}"/usr/bin/kill "${ED}"/bin/ || die + fi + + gen_usr_ldscript -a procps fi +} - gen_usr_ldscript -a procps - find "${D}" -name '*.la' -delete || die +multilib_src_install_all() { + find "${ED}" -type f -name '*.la' -delete || die } |
