From a2b71067936018fc440a1ed54819150c82b64269 Mon Sep 17 00:00:00 2001 From: Craig Small Date: Tue, 22 Oct 2019 08:14:35 +1100 Subject: [PATCH] snice: Fix matching on PID @MarsChan correctly pointed out that the read() always returns 128 bytes, so skipping on >= 128 will always mean we skip. Their suggestion was to remove the equality, but read will never go past 128 bytes so I just removed that part of the check. References: procps-ng/procps!89 --- NEWS | 1 + skill.c | 4 ++-- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/NEWS b/NEWS index 0401562b..0a009857 100644 --- a/NEWS +++ b/NEWS @@ -3,6 +3,7 @@ procps-ng-NEXT * docs: Use correct symbols for -h option in free.1 Debian #898774 * docs: ps.1 now warns about command name length issue #101 * pgrep: Match on runstate issue #109, Debian #919381 + * snice: Fix matching on pid merge #89 * top: can now exploit 256-color terminals issue #96 * top: preserves 'other filters' in configuration file issue #99 * top: can now collapse/expand forest view children issue #99 diff --git a/skill.c b/skill.c index 3bc331f6..c91aa7b7 100644 --- a/skill.c +++ b/skill.c @@ -200,9 +200,9 @@ static void check_proc(int pid, struct run_time_conf_t *run_time) goto closure; } len = read(fd, buf, sizeof(buf)); - if (len <= 0 || (size_t)len >= sizeof(buf)) + if (len <= 0) goto closure; - buf[len] = '\0'; + buf[sizeof(buf) -1] = '\0'; tmp = strrchr(buf, ')'); if (!tmp) goto closure;