diff options
Diffstat (limited to 'sys-process/psmisc')
-rw-r--r-- | sys-process/psmisc/Manifest | 3 | ||||
-rw-r--r-- | sys-process/psmisc/files/psmisc-23.2-killall_check_truncated_16_char.patch | 122 | ||||
-rw-r--r-- | sys-process/psmisc/files/psmisc-23.2-old_comm_len.patch | 28 | ||||
-rw-r--r-- | sys-process/psmisc/psmisc-23.2-r2.ebuild | 56 |
4 files changed, 209 insertions, 0 deletions
diff --git a/sys-process/psmisc/Manifest b/sys-process/psmisc/Manifest index 5240c6407df3..3e92cd970d67 100644 --- a/sys-process/psmisc/Manifest +++ b/sys-process/psmisc/Manifest @@ -1,5 +1,8 @@ +AUX psmisc-23.2-killall_check_truncated_16_char.patch 4440 BLAKE2B d04ab70003cb9de27c918ff72a283fbbfc087760a11ff4fad9cf587ff2aa4e3e22bafe94d615d192f33c0d7e0868efd03949e6f1b60acbeaba475600d2e546ee SHA512 ec9247957426865f009b5bd22bb518c229a52e5f26908e304fd6b3a891204bc53cf6cb2974d9b38741a5afb9b6f9ebfd622a7911412a53b90ec20366f3b3f4ca +AUX psmisc-23.2-old_comm_len.patch 602 BLAKE2B ebcf12e6debdef6a708594f2193103f41c36babd2b5b6ae2027c17364102fc906bf88cd275e2a9183bde62d94da6106fa2eb36cdc62af4a77ca0623be2cc8d01 SHA512 fea4df7b9cabfc5e02628a7876a032027c738f1515b049caf5ccdc376cc6a64eacd1c232d006ab102c5c5aed9e0b40c3cbd23c9e698312dc853b06abd2809c8a DIST psmisc-23.1.tar.xz 296136 BLAKE2B e53f7b80f1106622d652dad772d4236a62a1eb58e277f078cf0392d5a0bd7963c66805e28f6d1300999f2e2e5dcb692b1ecb3f6d39cefa77ebbc87302cd730be SHA512 f678869ea555986a2538ada9630b74ce79304f3ee85cc9d69a3912d8d30ad491829eac0dcb69aae7003ee9b5de9645d2135b80a9e0b77824e60c417dc0be5f95 DIST psmisc-23.2.tar.xz 303820 BLAKE2B 6c63a54b91e1e31f812bc47c10937e8767fa2990bef66ee779bf44887625719e7342da05137222a6636df7a0e520c39318faba3e7a1022c54fd9f3f172ecc851 SHA512 a8d4e91443b66de1c4418fd74b5eb6dd42caddc937e75dfb35a4e49b9b35236db779e2a480c1693bcc7feaf0957b1028850134040685e88e6ff7ffcb572e20e8 EBUILD psmisc-23.1-r1.ebuild 1273 BLAKE2B 9c98494ae95fa7e7f9ba859b07905f82f7a24757e8b60b1555f0dd6a74514550550bdb8a6aef826f4be48d0e8390d6f536dd13f9fb82fe055efc262d99838863 SHA512 23ea8e69530e30ea5d9fc92060ee0d0f0aa9e52501ec169cb1033e7887aebad73b52a06c996f064c988d11d21574de1279ebd7ee29552991e09c419edbb7d9b1 EBUILD psmisc-23.2-r1.ebuild 1283 BLAKE2B 33c7b2e180fd3e5a28cbdf69f0428d3197b2fb23aa01225649fc2799f43ad47f18e8be62d2d974e7d4a53e1c97177e49b6702ac2a48c4ce45ec248de03182c24 SHA512 21641e7161b35ddc7a8b3510928cc5b5800a6f660552520171918ee2d889962c759b0421d6001e458ee7451ea30d24f2642cc2a119ef7dfb89044aae55754252 +EBUILD psmisc-23.2-r2.ebuild 1393 BLAKE2B 81dc63e68930f360225079d5bb2f7bf1cea2cc0c3db480b4318102fdff3ab9364caf521ffaeae36166a2a188008d1687ed9bbd3f50816369b8c2b10d864aef89 SHA512 bd9cd294c1100b3643db7f02f1e24b335de795e503b45aa3d145511ab3c4a1ef404275bfeab89ee35cf0688a28b46de60a19e79a82ce23aae8713aa612b64e15 MISC metadata.xml 326 BLAKE2B 899a2f3fa295d2e0e8d6114542a149db37c730b845d7ba720127ca2b9b85044c53ff7aa107f866a6e2ece895a8159e25350b17d9665fc9ff915aed3640ac22cf SHA512 580a0e66078b7304d0bf76e3c990e61ee4c073b49381b60c5f3f01e2b64d5f0c318eb5596f7da09a70fa52dc93769b25f37f531038e5d7ce6278dda10e18117c diff --git a/sys-process/psmisc/files/psmisc-23.2-killall_check_truncated_16_char.patch b/sys-process/psmisc/files/psmisc-23.2-killall_check_truncated_16_char.patch new file mode 100644 index 000000000000..bfc2a24d5de9 --- /dev/null +++ b/sys-process/psmisc/files/psmisc-23.2-killall_check_truncated_16_char.patch @@ -0,0 +1,122 @@ +From 1188315cd037d73bf946a0003b70c6423cc330d2 Mon Sep 17 00:00:00 2001 +From: Craig Small <csmall@enc.com.au> +Date: Wed, 7 Nov 2018 20:13:09 +1100 +Subject: [PATCH] killall: match on 16 character commlen too + +The comm length increase meant killall could accomodate the +larger comm name given out by newer kernels but it meant that +if a user relied on the previous 16 character truncation then +processes that used to match would fail. + +killall now checks to see if the the comm is the old COMM_LEN +length and the given name is longer than old COMM_LEN and does +a truncated match as well. + +References: + https://bugs.debian.org/912748 +--- + ChangeLog | 3 +++ + src/killall.c | 69 +++++++++++++++++++++++++++++++++++---------------- + 2 files changed, 50 insertions(+), 22 deletions(-) + +diff --git a/ChangeLog b/ChangeLog +index 7fd2abd..37962cb 100644 +--- a/ChangeLog ++++ b/ChangeLog +@@ -1,3 +1,6 @@ ++Changes in 23.4 ++=============== ++ * killall: check also truncated 16 char comm names Debian #912748 + Changes in 23.2 + =============== + * misc: Command names increased from 16 to 64 characters +diff --git a/src/killall.c b/src/killall.c +index 2715515..09212a4 100644 +--- a/src/killall.c ++++ b/src/killall.c +@@ -492,6 +492,49 @@ create_pid_table(int *max_pids, int *pids) + return pid_table; + } + ++#define strcmp2(A,B,I) (I? strcasecmp((A),(B)):strcmp((A),(B))) ++#define strncmp2(A,B,L,I) (I? strncasecmp((A),(B),(L)):strncmp((A),(B),(L))) ++static int match_process_name( ++ const char *proc_comm, ++ const int comm_len, ++ const char *proc_cmdline, ++ const char *match_name, ++ const int match_len, ++ const int got_long ++ ) ++{ ++ /* process is old length but matching longer */ ++ if (comm_len == OLD_COMM_LEN - 1 && match_len >= OLD_COMM_LEN - 1) ++ { ++ if (got_long) ++ { ++ return (0 == strncmp2 (match_name, proc_cmdline, OLD_COMM_LEN - 1, ++ ignore_case)); ++ } else { ++ return (0 == strncmp2 (match_name, proc_comm, OLD_COMM_LEN - 1, ++ ignore_case)); ++ } ++ } ++ ++ if (comm_len == COMM_LEN - 1 && match_len >= COMM_LEN - 1) ++ { ++ if (got_long) ++ { ++ return (0 == strncmp2 (match_name, proc_cmdline, COMM_LEN - 1, ++ ignore_case)); ++ } else { ++ return (0 == strncmp2 (match_name, proc_comm, COMM_LEN - 1, ++ ignore_case)); ++ } ++ } ++ /* Not old new COMM_LEN so we match all of it */ ++ if (got_long) ++ { ++ return (0 == strcmp2 (match_name, proc_cmdline, ignore_case)); ++ } ++ return (0 == strcmp2 (match_name, proc_comm, ignore_case)); ++} ++ + #ifdef WITH_SELINUX + static int + kill_all(int signal, int name_count, char **namelist, struct passwd *pwent, +@@ -599,28 +642,10 @@ kill_all (int signal, int name_count, char **namelist, struct passwd *pwent) + { + if (!name_info[j].st.st_dev) + { +- if (length != COMM_LEN - 1 || name_info[j].name_length < COMM_LEN - 1) +- { +- if (ignore_case == 1) +- { +- if (strcasecmp (namelist[j], comm)) +- continue; +- } else { +- if (strcmp(namelist[j], comm)) +- continue; +- } +- } else { +- if (ignore_case == 1) +- { +- if (got_long ? strcasecmp (namelist[j], command) : +- strncasecmp (namelist[j], comm, COMM_LEN - 1)) +- continue; +- } else { +- if (got_long ? strcmp (namelist[j], command) : +- strncmp (namelist[j], comm, COMM_LEN - 1)) +- continue; +- } +- } ++ if (!match_process_name(comm, length, command, namelist[j], ++ name_info[j].name_length, got_long)) ++ continue; ++ + } else { + int ok = 1; + if (asprintf (&path, PROC_BASE "/%d/exe", pid_table[i]) < 0) +-- +2.18.1 + diff --git a/sys-process/psmisc/files/psmisc-23.2-old_comm_len.patch b/sys-process/psmisc/files/psmisc-23.2-old_comm_len.patch new file mode 100644 index 000000000000..ae237e691099 --- /dev/null +++ b/sys-process/psmisc/files/psmisc-23.2-old_comm_len.patch @@ -0,0 +1,28 @@ +From e2cf9f3e83e0fc0278ff39a4dfc8e3f2730eebca Mon Sep 17 00:00:00 2001 +From: Craig Small <csmall@enc.com.au> +Date: Wed, 7 Nov 2018 20:19:38 +1100 +Subject: [PATCH] misc: Remember to add comm.h too + +The previous commit should have included comm.h too +--- + src/comm.h | 6 ++++++ + 1 file changed, 6 insertions(+) + +diff --git a/src/comm.h b/src/comm.h +index b54b998..b10eb36 100644 +--- a/src/comm.h ++++ b/src/comm.h +@@ -33,4 +33,10 @@ + */ + #define COMM_LEN 64 + ++/* ++ * Older kernels had only 16 characters, which means we may have to check this ++ * too ++ */ ++#define OLD_COMM_LEN 16 ++ + #endif +-- +2.18.1 + diff --git a/sys-process/psmisc/psmisc-23.2-r2.ebuild b/sys-process/psmisc/psmisc-23.2-r2.ebuild new file mode 100644 index 000000000000..f06137e3682d --- /dev/null +++ b/sys-process/psmisc/psmisc-23.2-r2.ebuild @@ -0,0 +1,56 @@ +# Copyright 1999-2019 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +EAPI=6 + +DESCRIPTION="A set of tools that use the proc filesystem" +HOMEPAGE="http://psmisc.sourceforge.net/" +SRC_URI="mirror://sourceforge/${PN}/${P}.tar.xz" + +LICENSE="GPL-2" +SLOT="0" +KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~hppa ~ia64 ~m68k ~mips ~ppc ~ppc64 ~s390 ~sh ~sparc ~x86 ~amd64-linux ~x86-linux" +IUSE="ipv6 nls selinux X" + +RDEPEND=">=sys-libs/ncurses-5.7-r7:0= + nls? ( virtual/libintl ) + selinux? ( sys-libs/libselinux )" +DEPEND="${RDEPEND} + >=sys-devel/libtool-2.2.6b + nls? ( sys-devel/gettext )" + +DOCS=( AUTHORS ChangeLog NEWS README ) + +PATCHES=( + "${FILESDIR}/${P}-old_comm_len.patch" + "${FILESDIR}/${P}-killall_check_truncated_16_char.patch" +) + +src_configure() { + local myeconfargs=( + --disable-harden-flags + $(use_enable ipv6) + $(use_enable nls) + $(use_enable selinux) + ) + econf "${myeconfargs[@]}" +} + +src_compile() { + # peekfd is a fragile crap hack #330631 + nonfatal emake -C src peekfd || touch src/peekfd{.o,} + emake +} + +src_install() { + default + + use X || rm -f "${ED%/}"/usr/bin/pstree.x11 + + [[ -s ${ED%/}/usr/bin/peekfd ]] || rm -f "${ED%/}"/usr/bin/peekfd + [[ -e ${ED%/}/usr/bin/peekfd ]] || rm -f "${ED%/}"/usr/share/man/man1/peekfd.1 + + # fuser is needed by init.d scripts; use * wildcard for #458250 + dodir /bin + mv "${ED%/}"/usr/bin/*fuser "${ED%/}"/bin || die +} |