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 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 \ --subject='Re: [RFC PATCH v3] grep: treat PCRE2 jit compilation memory error as non fatal' \ /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
git@vger.kernel.org list mirror (unofficial, one of many) This inbox may be cloned and mirrored by anyone: git clone --mirror https://public-inbox.org/git git clone --mirror http://ou63pmih66umazou.onion/git git clone --mirror http://czquwvybam4bgbro.onion/git git clone --mirror http://hjrcffqmbrq6wope.onion/git # If you have public-inbox 1.1+ installed, you may # initialize and index your mirror using the following commands: public-inbox-init -V1 git git/ https://public-inbox.org/git \ git@vger.kernel.org public-inbox-index git Example config snippet for mirrors. Newsgroups are available over NNTP: nntp://news.public-inbox.org/inbox.comp.version-control.git nntp://ou63pmih66umazou.onion/inbox.comp.version-control.git nntp://czquwvybam4bgbro.onion/inbox.comp.version-control.git nntp://hjrcffqmbrq6wope.onion/inbox.comp.version-control.git nntp://news.gmane.io/gmane.comp.version-control.git note: .onion URLs require Tor: https://www.torproject.org/ code repositories for project(s) associated with this inbox: https://80x24.org/mirrors/git.git AGPL code for this site: git clone https://public-inbox.org/public-inbox.git