pgrep: fix -x option
authorBernhard Walle <bernhard@bwalle.de>
Thu, 28 Feb 2013 11:42:38 +0000 (12:42 +0100)
committerDenys Vlasenko <vda.linux@googlemail.com>
Thu, 28 Feb 2013 11:42:38 +0000 (12:42 +0100)
Because when -x is used (exact match), then we cannot compile the
regular expression with REG_NOSUB. The manual page regcomp(3) states
in section "Byte offsets":

    Unless REG_NOSUB was set for the compilation of the pattern
    buffer, it is possible to obtain substring match addressing
    information.

The problem was detected on an ARM system with glibc 2.16.
Signed-off-by: Bernhard Walle <bernhard@bwalle.de>
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
procps/pgrep.c

index dc7ffff486e10ddf51a10676b6c30ad147bd6eca..7616027b72dc5ba19550066d1cf5749756c07a68 100644 (file)
@@ -128,7 +128,7 @@ int pgrep_main(int argc UNUSED_PARAM, char **argv)
                bb_show_usage();
 
        if (argv[0])
-               xregcomp(&re_buffer, argv[0], REG_EXTENDED | REG_NOSUB);
+               xregcomp(&re_buffer, argv[0], OPT_ANCHOR ? REG_EXTENDED : (REG_EXTENDED|REG_NOSUB);
 
        matched_pid = 0;
        cmd_last = NULL;