]> granicus.if.org Git - procps-ng/commitdiff
pgrep: Don't segfault with no match
authorCraig Small <csmall@enc.com.au>
Fri, 6 Apr 2018 13:00:29 +0000 (23:00 +1000)
committerCraig Small <csmall@enc.com.au>
Fri, 6 Apr 2018 13:00:29 +0000 (23:00 +1000)
If pgrep is run with a non-program name match and there are
no matches, it segfaults.

The testsuite thinks zero bytes sent, and zero bytes sent
because the program crashed is the same :/

References:
 commit 1aacf4af7f199d77fc9386e249eee654f59880db
 https://bugs.debian.org/894917

Signed-off-by: Craig Small <csmall@enc.com.au>
NEWS
pgrep.c

diff --git a/NEWS b/NEWS
index 41032e37efaf67bcf8c6d112e0216e5dea3283a9..681d9d04e3659d0a553c3fa6fcd5d2b4f2565d71 100644 (file)
--- a/NEWS
+++ b/NEWS
@@ -1,3 +1,7 @@
+procps-ng-3.3.14
+----------------
+  * pgrep: Don't segfault on non match                     Debian #894917
+
 procps-ng-3.3.13
 ----------------
   * library: Increment to 7:0:1
diff --git a/pgrep.c b/pgrep.c
index ed77a649a1404d66e207033b39dba66d03bdb6fb..46832a6101798c00df1a86a1baa45b9f5157fde4 100644 (file)
--- a/pgrep.c
+++ b/pgrep.c
@@ -652,7 +652,7 @@ static struct el * select_procs (int *num)
        closeproc (ptp);
        *num = matches;
 
-       if ((!matches) && (!opt_full) && (strlen(opt_pattern) > 15))
+       if ((!matches) && (!opt_full) && opt_pattern && (strlen(opt_pattern) > 15))
                xwarnx(_("pattern that searches for process name longer than 15 characters will result in zero matches\n"
                                 "Try `%s -f' option to match against the complete command line."),
                                 program_invocation_short_name);