https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=219077

--- Comment #4 from commit-h...@freebsd.org ---
A commit references this bug:

Author: kevans
Date: Wed Aug 16 18:00:33 UTC 2017
New revision: 322587
URL: https://svnweb.freebsd.org/changeset/base/322587

Log:
  bsdgrep: fix -w flag matching with an empty pattern

  MFC r317703: bsdgrep: fix -w flag matching with an empty pattern

  -w flag matching with an empty pattern was generally 'broken', allowing
  matches to occur on any line whether or not it actually matches -w
  criteria.

  This fix required a good amount of refactoring to address.  procline()
  is altered to *only* process the line and return whether it was a match
  or not, necessary to be able to short-circuit the whole function in case
  of this matchall flag. -m flag handling is moved out as well because it
  suffers from the same fate as context handling if we bypass any actual
  pattern matching.

  The matching context (matches, mostly) didn't previously exist outside
  of procline(), so we go ahead and create context object for file
  processing bits to pass around.  grep_printline() was created due to
  this, for the scenarios where the matches don't actually matter and we
  just want to print a line or two, a la flushing the context queue and
  no -o or --color specified.

  Damage from this broken behavior would have been mitigated by the fact
  that it is unlikely users would invoke grep -w with an empty pattern.

  This was identified while checking PR 105221 for problems it this may
  cause in BSD grep, but PR 105221 is *not* a report of this behavior.

  MFC r317741: bsdgrep: correct uninitialized variable introduced in r317703

  MFC r317842: bsdgrep: don't ouptut matches with -c, -l, -L

  Refactoring done in r317703 broke -c, -l, and -L flags implying
  suppression of match printing.  Fortunately this is just a matter of not
  doing any printing of the resulting matches and context printing was not
  broken in this refactoring.

  Add some regression tests since this area may still see further
  refactoring, include different context flags as well even though they
  were not broken in this case.

  PR:           219077
  Approved by:  emaste (mentor, blanket MFC)

Changes:
_U  stable/11/
  stable/11/contrib/netbsd-tests/usr.bin/grep/d_context_e.in
  stable/11/contrib/netbsd-tests/usr.bin/grep/d_context_e.out
  stable/11/contrib/netbsd-tests/usr.bin/grep/d_context_f.out
  stable/11/contrib/netbsd-tests/usr.bin/grep/d_context_g.out
  stable/11/contrib/netbsd-tests/usr.bin/grep/t_grep.sh
  stable/11/usr.bin/grep/grep.c
  stable/11/usr.bin/grep/grep.h
  stable/11/usr.bin/grep/queue.c
  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.
_______________________________________________
freebsd-bugs@freebsd.org mailing list
https://lists.freebsd.org/mailman/listinfo/freebsd-bugs
To unsubscribe, send any mail to "freebsd-bugs-unsubscr...@freebsd.org"

Reply via email to