Avoid read-after-free in S_scan_heredoc() if the terminator line has no "\n".
authorNicholas Clark <nick@ccl4.org>
Thu, 27 Jun 2013 16:09:32 +0000 (18:09 +0200)
committerNicholas Clark <nick@ccl4.org>
Mon, 22 Jul 2013 16:47:44 +0000 (18:47 +0200)
commitd8fe30adb48694ba33b463f653894093f743a8f0
tree4956721168789869d9d26ae69e485701caa696c9
parent1b0b0194a1babd353244c24159c3b32c5621ace9
Avoid read-after-free in S_scan_heredoc() if the terminator line has no "\n".

The code added by commit 112d128413206514 to fix RT #65838 (Allow here-doc
with no final newline) could in some rare cases cause a read of free()d
memory during parsing. The code itself is only run if the Perl program
ends with a heredoc (which is an unusual structure), and if the last line of
the file on disk has no terminating newline character (which is also unusual,
as many editors default to adding a final newline). The bug would be
triggered if the fixup code in S_scan_heredoc() triggered a reallocation of
the buffer in PL_linestr when adding a newline to it.
t/op/heredoc.t
toke.c