From: "Carlo Marcelo Arenas Belón" <carenas@gmail.com>
To: git@vger.kernel.org
Cc: Johannes.Schindelin@gmx.de, avarab@gmail.com, gitster@pobox.com,
l.s.r@web.de
Subject: [RFC PATCH v3] grep: treat PCRE2 jit compilation memory error as non fatal
Date: Sat, 3 Aug 2019 20:14:09 -0700 [thread overview]
Message-ID: <20190804031409.32764-1-carenas@gmail.com> (raw)
In-Reply-To: <20190729105955.44390-1-carenas@gmail.com>
94da9193a6 (grep: add support for PCRE v2, 2017-06-01) uses the
JIT fast path unless JIT support has not been compiled in the
linked library.
Starting from 10.23 of PCRE2, pcre2grep ignores any errors from
pcre2_jit_cpmpile as a workaround for their bug1749[1] and we
should do too, so that the interpreter could be used as a fallback
in cases where JIT was not available because of a security policy.
To be conservative, we are restricting initially the error to the
known error that would be returned in that case (and to be documented
as such in a future release of PCRE) and printing a warning so that
corrective action could be taken.
[1] https://bugs.exim.org/show_bug.cgi?id=1749
Signed-off-by: Carlo Marcelo Arenas Belón <carenas@gmail.com>
---
grep.c | 8 +++++++-
1 file changed, 7 insertions(+), 1 deletion(-)
diff --git a/grep.c b/grep.c
index f7c3a5803e..593a1cb7a0 100644
--- a/grep.c
+++ b/grep.c
@@ -525,7 +525,13 @@ static void compile_pcre2_pattern(struct grep_pat *p, const struct grep_opt *opt
if (p->pcre2_jit_on == 1) {
jitret = pcre2_jit_compile(p->pcre2_pattern, PCRE2_JIT_COMPLETE);
if (jitret)
- die("Couldn't JIT the PCRE2 pattern '%s', got '%d'\n", p->pattern, jitret);
+ if (jitret == PCRE2_ERROR_NOMEMORY) {
+ warning("JIT couldn't be used in PCRE2");
+ p->pcre2_jit_on = 0;
+ return;
+ }
+ else
+ die("Couldn't JIT the PCRE2 pattern '%s', got '%d'\n", p->pattern, jitret);
/*
* The pcre2_config(PCRE2_CONFIG_JIT, ...) call just
--
2.23.0.rc1
next prev parent reply other threads:[~2019-08-04 3:14 UTC|newest]
Thread overview: 23+ messages / expand[flat|nested] mbox.gz Atom feed top
2019-07-28 23:54 [RFC PATCH] grep: allow for run time disabling of JIT in PCRE Carlo Marcelo Arenas Belón
2019-07-29 0:09 ` Carlo Arenas
2019-07-29 4:57 ` Junio C Hamano
2019-07-29 5:29 ` Carlo Arenas
2019-07-29 8:55 ` Ævar Arnfjörð Bjarmason
2019-07-29 10:26 ` Carlo Arenas
2019-07-29 12:38 ` Ævar Arnfjörð Bjarmason
2019-07-30 13:01 ` Carlo Arenas
2019-07-29 10:59 ` [RFC PATCH v2] " Carlo Marcelo Arenas Belón
2019-07-29 11:33 ` Carlo Arenas
2019-07-29 15:11 ` René Scharfe
2019-07-29 17:47 ` Junio C Hamano
2019-07-30 0:49 ` Carlo Arenas
2019-07-30 17:55 ` René Scharfe
2019-07-31 12:36 ` Johannes Schindelin
2019-07-31 16:18 ` Junio C Hamano
2019-07-31 12:32 ` Johannes Schindelin
2019-07-31 14:57 ` Ævar Arnfjörð Bjarmason
2019-08-04 0:25 ` Carlo Arenas
2019-08-04 3:14 ` Carlo Marcelo Arenas Belón [this message]
2019-08-04 7:43 ` [RFC PATCH v3] grep: treat PCRE2 jit compilation memory error as non fatal Carlo Arenas
2019-08-05 20:16 ` Junio C Hamano
2019-07-31 12:24 ` [RFC PATCH] grep: allow for run time disabling of JIT in PCRE Johannes Schindelin
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
List information: http://vger.kernel.org/majordomo-info.html
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20190804031409.32764-1-carenas@gmail.com \
--to=carenas@gmail.com \
--cc=Johannes.Schindelin@gmx.de \
--cc=avarab@gmail.com \
--cc=git@vger.kernel.org \
--cc=gitster@pobox.com \
--cc=l.s.r@web.de \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
Code repositories for project(s) associated with this public inbox
https://80x24.org/mirrors/git.git
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).