summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPaul Eggert <eggert@cs.ucla.edu>2020-09-09 14:09:54 -0700
committerPaul Eggert <eggert@cs.ucla.edu>2020-09-09 16:00:59 -0700
commit68dddcfd25715d14d8052833d6d6a84d277953b7 (patch)
tree0167fe136a540c7c97a239a55d866684cdbd1bdd
parentde6f36d9b6d702b14ac4ee58dfbcab740c7ca749 (diff)
downloadgrep-68dddcfd25715d14d8052833d6d6a84d277953b7.tar.gz
grep: fix PCRE JIT test when JIT not available
Problem reported by Thomas Deutschmann (Bug#29446#23). * src/pcresearch.c (Pexecute): Diagnose PCRE_ERROR_RECURSIONLIMIT. * tests/pcre-jitstack: Treat recursion limit overflow like stack overflow.
-rw-r--r--src/pcresearch.c3
-rwxr-xr-xtests/pcre-jitstack3
2 files changed, 5 insertions, 1 deletions
diff --git a/src/pcresearch.c b/src/pcresearch.c
index 2fcbf8e6..e2650832 100644
--- a/src/pcresearch.c
+++ b/src/pcresearch.c
@@ -311,6 +311,9 @@ Pexecute (void *vcp, char const *buf, size_t size, size_t *match_size,
case PCRE_ERROR_MATCHLIMIT:
die (EXIT_TROUBLE, 0, _("exceeded PCRE's backtracking limit"));
+ case PCRE_ERROR_RECURSIONLIMIT:
+ die (EXIT_TROUBLE, 0, _("exceeded PCRE's recursion limit"));
+
default:
/* For now, we lump all remaining PCRE failures into this basket.
If anyone cares to provide sample grep usage that can trigger
diff --git a/tests/pcre-jitstack b/tests/pcre-jitstack
index d5a621bf..39cda925 100755
--- a/tests/pcre-jitstack
+++ b/tests/pcre-jitstack
@@ -56,7 +56,8 @@ if test $? != 1; then
|| fail=1
# If that failed due to stack overflow, don't cry foul.
- test $fail = 1 && { grep -q 'stack overflow' err && fail=0 || cat err; }
+ overflow_pat="stack overflow|exceeded PCRE's recursion limit"
+ test $fail = 1 && { grep -Eq "$overflow_pat" err && fail=0 || cat err; }
fi
Exit $fail