sys-apps/grep: Revbump to fix multiple pattern issue (bug #608644).
authorLars Wendler <polynomial-c@gentoo.org>
Wed, 8 Feb 2017 21:36:09 +0000 (22:36 +0100)
committerLars Wendler <polynomial-c@gentoo.org>
Wed, 8 Feb 2017 21:37:37 +0000 (22:37 +0100)
Removed old.

Package-Manager: Portage-2.3.3, Repoman-2.3.1

sys-apps/grep/files/grep-2.28-multiple_pattern_fix.patch [new file with mode: 0644]
sys-apps/grep/grep-2.28-r1.ebuild [moved from sys-apps/grep/grep-2.28.ebuild with 94% similarity]

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 (file)
index 0000000..f6cf64d
--- /dev/null
@@ -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
+
similarity index 94%
rename from sys-apps/grep/grep-2.28.ebuild
rename to sys-apps/grep/grep-2.28-r1.ebuild
index f2035a7b7ae33de37dac12aeb325327be0fa6d66..dc112782f9d23ee02c5eb114e58745246b147d5e 100644 (file)
@@ -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