summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLars Wendler <polynomial-c@gentoo.org>2017-02-08 22:36:09 +0100
committerLars Wendler <polynomial-c@gentoo.org>2017-02-08 22:37:37 +0100
commitaa2f866c5f633501863c0fb48ea7d368761596d2 (patch)
tree12e32af9c08cdffe365feb313b95c7078a6f7cc4 /sys-apps/grep
parentnet-analyzer/fe3d: Drop netmon maintainership. (diff)
downloadgentoo-aa2f866c5f633501863c0fb48ea7d368761596d2.tar.gz
gentoo-aa2f866c5f633501863c0fb48ea7d368761596d2.tar.bz2
gentoo-aa2f866c5f633501863c0fb48ea7d368761596d2.zip
sys-apps/grep: Revbump to fix multiple pattern issue (bug #608644).
Removed old. Package-Manager: Portage-2.3.3, Repoman-2.3.1
Diffstat (limited to 'sys-apps/grep')
-rw-r--r--sys-apps/grep/files/grep-2.28-multiple_pattern_fix.patch97
-rw-r--r--sys-apps/grep/grep-2.28-r1.ebuild (renamed from sys-apps/grep/grep-2.28.ebuild)5
2 files changed, 102 insertions, 0 deletions
diff --git a/sys-apps/grep/files/grep-2.28-multiple_pattern_fix.patch b/sys-apps/grep/files/grep-2.28-multiple_pattern_fix.patch
new file mode 100644
index 000000000000..f6cf64d3831f
--- /dev/null
+++ b/sys-apps/grep/files/grep-2.28-multiple_pattern_fix.patch
@@ -0,0 +1,97 @@
+From 6e4c8728f0e75af57f839625d0bd51b0a02d091e Mon Sep 17 00:00:00 2001
+From: Paul Eggert <eggert@cs.ucla.edu>
+Date: Wed, 8 Feb 2017 13:00:11 -0800
+Subject: grep: do not mishandle \. in multiple patterns
+
+Problem reported by Lars Wendler (Bug#25655).
+* NEWS: Document this.
+* src/grep.c (try_fgrep_pattern): Fix typo that prevented
+keys from being properly updated.
+* tests/foad1: Test for the bug.
+---
+ src/grep.c | 15 ++++++++-------
+ tests/foad1 | 7 +++++++
+ 3 files changed, 20 insertions(+), 7 deletions(-)
+
+diff --git a/src/grep.c b/src/grep.c
+index 81654c3..74acb0b 100644
+--- a/src/grep.c
++++ b/src/grep.c
+@@ -2361,11 +2361,12 @@ try_fgrep_pattern (int matcher, char *keys, size_t *len_p)
+ size_t len = *len_p;
+ char *new_keys = xmalloc (len + 1);
+ char *p = new_keys;
++ char const *q = keys;
+ mbstate_t mb_state = { 0 };
+
+ while (len != 0)
+ {
+- switch (*keys)
++ switch (*q)
+ {
+ case '$': case '*': case '.': case '[': case '^':
+ goto fail;
+@@ -2377,7 +2378,7 @@ try_fgrep_pattern (int matcher, char *keys, size_t *len_p)
+
+ case '\\':
+ if (1 < len)
+- switch (keys[1])
++ switch (q[1])
+ {
+ case '\n':
+ case 'B': case 'S': case 'W': case'\'': case '<':
+@@ -2391,7 +2392,7 @@ try_fgrep_pattern (int matcher, char *keys, size_t *len_p)
+ goto fail;
+ /* Fall through. */
+ default:
+- keys++, len--;
++ q++, len--;
+ break;
+ }
+ break;
+@@ -2401,20 +2402,20 @@ try_fgrep_pattern (int matcher, char *keys, size_t *len_p)
+ size_t n;
+ if (match_icase)
+ {
+- int ni = fgrep_icase_charlen (keys, len, &mb_state);
++ int ni = fgrep_icase_charlen (q, len, &mb_state);
+ if (ni < 0)
+ goto fail;
+ n = ni;
+ }
+ else
+ {
+- n = mb_clen (keys, len, &mb_state);
++ n = mb_clen (q, len, &mb_state);
+ if (MB_LEN_MAX < n)
+ goto fail;
+ }
+
+- p = mempcpy (p, keys, n);
+- keys += n;
++ p = mempcpy (p, q, n);
++ q += n;
+ len -= n;
+ }
+ }
+diff --git a/tests/foad1 b/tests/foad1
+index 286c449..0163f1a 100755
+--- a/tests/foad1
++++ b/tests/foad1
+@@ -137,6 +137,13 @@ grep_test "$x2" "$y2" -F -w --color=always bc
+ grep_test "$x3" "$y3" -E -w --color=always bc
+ grep_test "$x3" "$y3" -F -w --color=always bc
+
++# Bug#25655
++grep_test .tar/ .tar/ -e '\.tar' -e '\.tbz'
++grep_test .tar/ .tar/ -o -e '\.tar' -e 'tar'
++grep_test '$*.[^\/' '$*.[^\/' -o -e '\$\*\.\[\^\\' -e abc
++grep_test '$*.[^\/(+?{|/' '$*.[^\/(+?{|/' -o -E \
++ -e '\$\*\.\[\^\\' -e '\(\+\?\{\|'
++
+ # Skip the rest of the tests - known to fail. TAA.
+ Exit $failures
+
+--
+cgit v1.0-41-gc330
+
diff --git a/sys-apps/grep/grep-2.28.ebuild b/sys-apps/grep/grep-2.28-r1.ebuild
index f2035a7b7ae3..dc112782f9d2 100644
--- a/sys-apps/grep/grep-2.28.ebuild
+++ b/sys-apps/grep/grep-2.28-r1.ebuild
@@ -27,7 +27,12 @@ DEPEND="${RDEPEND}
DOCS=( AUTHORS ChangeLog NEWS README THANKS TODO )
+PATCHES=(
+ "${FILESDIR}"/${P}-multiple_pattern_fix.patch
+)
+
src_prepare() {
+ epatch "${PATCHES[@]}"
sed -i \
-e "s:@SHELL@:${EPREFIX}/bin/sh:g" \
src/egrep.sh || die #523898