diff --git a/NEWS b/NEWS index d616162c..3e3da470 100644 --- a/NEWS +++ b/NEWS @@ -7,6 +7,7 @@ procps-ng NEXT * pgrep: Add older than selection merge #79 * pidof: show worker threads Redhat #1803640 * ps.1: Mention stime alias issue #164 + * ps: check also match on truncated 16 char comm names * sysctl: Match systemd directory order * sysctl: Document directory order Debian #951550 * top: ensure config file backward compatibility Debian #951335 diff --git a/ps/select.c b/ps/select.c index 79a7038c..8decb889 100644 --- a/ps/select.c +++ b/ps/select.c @@ -113,8 +113,16 @@ static int proc_was_listed(proc_t *buf){ break; case SEL_TTY : return_if_match(rSv(TTY, s_int, buf),tty); break; case SEL_SESS: return_if_match(rSv(ID_SESSION, s_int, buf),pid); - break; case SEL_COMM: i=sn->n; while(i--) - if(!strncmp( rSv(CMD, str, buf), (*(sn->u+i)).cmd, 63 )) return 1; + break; + case SEL_COMM: + i=sn->n; + while(i--) { + /* special case, comm is 16 characters but match is longer */ + if (strlen(rSv(CMD, str, buf)) == 15 && strlen((*(sn->u+i)).cmd) >= 15) + if(!strncmp( rSv(CMD, str, buf), (*(sn->u+i)).cmd, 15 )) return 1; + if(!strncmp( rSv(CMD, str, buf), (*(sn->u+i)).cmd, 63 )) return 1; + } + #undef return_if_match