From: Amaury Couderc Date: Fri, 12 Dec 2025 13:35:54 +0000 (+0100) Subject: procps: fixed large pid issue with top X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=05393f13338a7b3db5bca8cb5a567f4b40ef675f;p=thirdparty%2Fopenembedded%2Fopenembedded-core-contrib.git procps: fixed large pid issue with top procps: fixed large pid issue with top top -b -n1 -H -p 92233720368547758071   signal 11 (SEGV) was caught by top, please This patch should be backported to the scarthgap branch once it is merged. Signed-off-by: Amaury Couderc Signed-off-by: Mathieu Dubois-Briand Signed-off-by: Richard Purdie --- diff --git a/meta/recipes-extended/procps/procps/top_large_pid_fix.patch b/meta/recipes-extended/procps/procps/top_large_pid_fix.patch new file mode 100644 index 00000000000..d7e3141e060 --- /dev/null +++ b/meta/recipes-extended/procps/procps/top_large_pid_fix.patch @@ -0,0 +1,52 @@ +From f21fc624d960d12afa399af7333d4f9193fb2ffb Mon Sep 17 00:00:00 2001 +From: Jim Warner +Date: Tue, 16 Sep 2025 12:00:00 -0500 +Subject: [PATCH] library: avoid possible segmentation fault, api +Upstream-Status: Backport +[https://gitlab.com/procps-ng/procps/-/commit/5461b50b1a85c5e556c4cd2739ca8ffdbc69399a] + +In the issue referenced below, that SEGV was caused by +passing a '-1' pid to the procps_pids_select function. +That value, in turn, is caused by providing a LONG_MAX +or greater number for what was assigned to an integer. + +So, this commit will help ensure we avoid a match when +we should fail plus skip some unproductive libc calls. + +[ the same problem occurs in that old 3.3.17 library ] + +Reference(s): +https://gitlab.com/procps-ng/procps/-/issues/394 + +Signed-off-by: Jim Warner +Signed-off-by: Amaury Couderc + +--- + library/readproc.c | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +diff --git a/library/readproc.c b/library/readproc.c +index 2dfe4c9e..d0e039bf 100644 +--- a/library/readproc.c ++++ b/library/readproc.c +@@ -1434,7 +1434,7 @@ static int listed_nextpid (PROCTAB *PT, proc_t *p) { + pid_t pid = *(PT->pids)++; + char *path = PT->path; + +- if (pid) { ++ if (pid > 0) { + snprintf(path, PROCPATHLEN, "/proc/%d", pid); + p->tid = p->tgid = pid; // this tgid may be a huge fib | + +@@ -1546,7 +1546,7 @@ PROCTAB *openproc(unsigned flags, ...) { + did_stat = 1; + } + PT->taskdir = NULL; +- PT->taskdir_user = -1; ++ PT->taskdir_user = -2; + PT->taskfinder = simple_nexttid; + PT->taskreader = simple_readtask; + +-- +2.43.0 + diff --git a/meta/recipes-extended/procps/procps_4.0.5.bb b/meta/recipes-extended/procps/procps_4.0.5.bb index d568cc831e4..0e0e06f0d28 100644 --- a/meta/recipes-extended/procps/procps_4.0.5.bb +++ b/meta/recipes-extended/procps/procps_4.0.5.bb @@ -14,6 +14,7 @@ inherit autotools gettext pkgconfig update-alternatives SRC_URI = "git://gitlab.com/procps-ng/procps.git;protocol=https;branch=master;tag=v${PV} \ file://sysctl.conf \ + file://top_large_pid_fix.patch \ " SRCREV = "f46b2f7929cdfe2913ed0a7f585b09d6adbf994e"