summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorKarl Williamson <khw@cpan.org>2020-02-20 17:49:36 +0000
committerSteve Hay <steve.m.hay@googlemail.com>2020-05-17 10:48:42 +0100
commit3295b48defa0f8570114877b063fe546dd348b3c (patch)
treef2d2198145ea6b360747b4947cc3903d01982065
parent0a320d753fe7fca03df259a4dfd8e641e51edaa8 (diff)
downloadperl-3295b48defa0f8570114877b063fe546dd348b3c.tar.gz
regcomp: use long jumps if there is any possibility of overflow
(CVE-2020-10878) Be conservative for backporting, we'll aim to do something more aggressive for bleadperl. (cherry picked from commit 9d7759db46f3b31b1d3f79c44266b6ba42a47fc6)
-rw-r--r--regcomp.c7
1 files changed, 7 insertions, 0 deletions
diff --git a/regcomp.c b/regcomp.c
index 4ba2980db6..73c35a6702 100644
--- a/regcomp.c
+++ b/regcomp.c
@@ -7762,6 +7762,13 @@ Perl_re_op_compile(pTHX_ SV ** const patternp, int pat_count,
/* We have that number in RExC_npar */
RExC_total_parens = RExC_npar;
+
+ /* XXX For backporting, use long jumps if there is any possibility of
+ * overflow */
+ if (RExC_size > U16_MAX && ! RExC_use_BRANCHJ) {
+ RExC_use_BRANCHJ = TRUE;
+ flags |= RESTART_PARSE;
+ }
}
else if (! MUST_RESTART(flags)) {
ReREFCNT_dec(Rx);