[Bug 197555] [patch] bsdgrep segfaults with --color and overlapping patterns
bugzilla-noreply at freebsd.org
bugzilla-noreply at freebsd.org
Wed Aug 16 00:13:48 UTC 2017
https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=197555
--- Comment #7 from commit-hook at freebsd.org ---
A commit references this bug:
Author: kevans
Date: Wed Aug 16 00:12:25 UTC 2017
New revision: 322555
URL: https://svnweb.freebsd.org/changeset/base/322555
Log:
bsdgrep: Fix matching behavior and add regression tests
MFC r316477: bsdgrep: fix matching behaviour
- Set REG_NOTBOL if we've already matched beginning of line and we're
examining later parts
- For each pattern we examine, apply it to the remaining bits of the
line rather than (potentially) smaller subsets
- Check for REG_NOSUB after we've looked at all patterns initially
matching the line
- Keep track of the last match we made to later determine if we're
simply not matching any longer or if we need to proceed another byte
because we hit a zero-length match
- Match the earliest and longest bit of each line before moving the
beginning of what we match to further in the line, past the end of the
longest match; this generally matches how gnugrep(1) seems to behave,
and seems like pretty good behavior to me
- Finally, bail out of printing any matches if we were set to print all
(empty pattern) but -o (output matches) was set
MFC r316489: bsdgrep: Initialize vars to avoid a false positive GCC warning
MFC r316491: bsdgrep: revert color changes from r316477
r316477 changed the color output to match exactly the in-tree GNU grep,
but introduces unnecessary escape sequences.
MFC r316536: bsdgrep: create additional tests for coverage on recent fixes
Create additional tests to cover regressions that were discovered by
PRs linked to reviews D10098, D10102, and D10104.
It is worth noting that neither bsdgrep(1) nor gnugrep(1) in the base
system currently pass all of these tests, and gnugrep(1) not quite being
up to snuff was also noted in at least one of the PRs.
MFC r317052: bsdgrep: fix zero-length matches without the -o flag
r316477 broke zero-length matches when not using the -o flag, by
skipping over them entirely.
Add a regression test so that it doesn't break again in the future.
PR: 175314, 180990, 181263, 195763, 197531, 197555, 202022, 209116
Approved by: emaste (mentor, blanket MFC)
Relnotes: yes
Changes:
_U stable/11/
stable/11/contrib/netbsd-tests/usr.bin/grep/d_color_a.in
stable/11/contrib/netbsd-tests/usr.bin/grep/d_color_a.out
stable/11/contrib/netbsd-tests/usr.bin/grep/d_color_b.in
stable/11/contrib/netbsd-tests/usr.bin/grep/d_color_b.out
stable/11/contrib/netbsd-tests/usr.bin/grep/d_color_c.out
stable/11/contrib/netbsd-tests/usr.bin/grep/d_escmap.in
stable/11/contrib/netbsd-tests/usr.bin/grep/d_f_file_empty.in
stable/11/contrib/netbsd-tests/usr.bin/grep/d_oflag_zerolen_a.in
stable/11/contrib/netbsd-tests/usr.bin/grep/d_oflag_zerolen_a.out
stable/11/contrib/netbsd-tests/usr.bin/grep/d_oflag_zerolen_b.in
stable/11/contrib/netbsd-tests/usr.bin/grep/d_oflag_zerolen_b.out
stable/11/contrib/netbsd-tests/usr.bin/grep/d_oflag_zerolen_c.in
stable/11/contrib/netbsd-tests/usr.bin/grep/d_oflag_zerolen_c.out
stable/11/contrib/netbsd-tests/usr.bin/grep/d_oflag_zerolen_d.in
stable/11/contrib/netbsd-tests/usr.bin/grep/d_oflag_zerolen_e.in
stable/11/contrib/netbsd-tests/usr.bin/grep/d_oflag_zerolen_e.out
stable/11/contrib/netbsd-tests/usr.bin/grep/t_grep.sh
stable/11/usr.bin/grep/tests/Makefile
stable/11/usr.bin/grep/util.c
--
You are receiving this mail because:
You are the assignee for the bug.
More information about the freebsd-bugs
mailing list