This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
PATCH: [perl #134325] Heap buffer overflow
authorKarl Williamson <khw@cpan.org>
Sun, 25 Aug 2019 01:17:19 +0000 (19:17 -0600)
committerKarl Williamson <khw@cpan.org>
Tue, 27 Aug 2019 04:00:42 +0000 (22:00 -0600)
commit439a3bfe85749ea9eca31372daec5705acaa3db1
tree22b514b66e8b07c7f0dd4e52a93ec88132208809
parent39d5361c0cd36ed4a0dc1ffa435cbef624cb70de
PATCH: [perl #134325] Heap buffer overflow

This was the result of trying to continue to parse after realizing that
we were going to have to reparse using long jumps.  This continuing only
happened when we realized we were going to have to reparse in order to
count parentheses anyway, and it was an attempt to save a pass in the
regex compiler, as without doing the continuing we'd restart the parse
to use long jumps from the beginning, and then when finished, would
restart the parse to count the parentheses.

However, in most cases this doesn't help, as when we get towards the end
of the parse (as in the test case in this ticket), we need the long
jump, and will segfault because we don't have it.  So we need the extra
pass anyway.

So this commit restarts the parse as soon as we discover we are going to
need longjumps
regcomp.c
t/re/pat.t