diff options
author | Karl Williamson <khw@cpan.org> | 2020-02-20 17:49:36 +0000 |
---|---|---|
committer | Steve Hay <steve.m.hay@googlemail.com> | 2020-05-17 10:48:42 +0100 |
commit | 3295b48defa0f8570114877b063fe546dd348b3c (patch) | |
tree | f2d2198145ea6b360747b4947cc3903d01982065 | |
parent | 0a320d753fe7fca03df259a4dfd8e641e51edaa8 (diff) | |
download | perl-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.c | 7 |
1 files changed, 7 insertions, 0 deletions
@@ -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); |