New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
heap-buffer-overflow (pad.c:1760:10) in Perl_pad_free #17090
Comments
From imdb95@gmail.comHello, **********Compilation and environment********** This is perl 5, version 31, subversion 2 (v5.31.2 (v5.31.1-6-g9649a81)) Copyright 1987-2019, Larry Wall Perl may be copied only under the terms of either the Artistic License or Complete documentation for Perl, including FAQ lists, should be found on root@instance-2:~/fuzz_perl# uname -a root@instance-2:~/fuzz_perl# lsb_release -r Compilation: **********Reproduce*********
|
From @iabynOn Tue, Jul 09, 2019 at 02:25:57AM -0700, Nguyen Duc Manh wrote:
This is feeding code containing a syntax error into the parser. -- |
The RT System itself - Status changed from 'new' to 'open' |
From @tonycozOn Tue, 09 Jul 2019 03:20:27 -0700, davem wrote:
Now public. Tony |
I haven't been able to reproduce this at the specified commit using afl from git:
|
It's again html escapes from the converter, proper one is (i've tried to paste code here, but it doesn't work when copied, even when guarded by triple backticks) found in the original report - i've got heap-buffer-overflow diagnostics from it on blead. |
I think the issue was the import process from RT added zero-width spaces after the two @ signs, I can now reproduce it. Let me try pasting it, based on the original message to the list>:
Copying that from the preview reproduced it. |
What's happening here is roughly the following sequence:
A kind of a fix would be for sublex_done() to pop the parser stack to where it started from before calling yyquit() but this won't help in the cases where the compilation croaks due to other errors (eg. more than 10 errors.) I expect the only real fix is start a new parse for a sublex rather than re-using the current parser, as has been suggested before. |
On Wed, Apr 22, 2020 at 01:36:15AM +0000, Tony Cook wrote:
A kind of a fix would be for sublex_done() to pop the parser stack to
where it started from before calling yyquit() but this won't help in the
cases where the compilation croaks due to other errors (eg. more than 10
errors.)
My desire is that compiling should abort on the first encountered parse
error, rather than trying (badly) to continue. The current behaviour
has thrown up many hard-to-fix crashes under fuzzing.
We would still allow multiple semantic errors to accumulate; e.g.
use strict; $x=1; $y=2;
would still output two 'Global symbol "$foo" requires explicit package name'
errors.
…--
Art is anything that has a label (especially if the label is "untitled 1")
|
Migrated from rt.perl.org#134277 (status was 'open')
Searchable as RT134277$
The text was updated successfully, but these errors were encountered: