Commit | Line | Data |
---|---|---|
d7186add HS |
1 | #!./perl |
2 | ||
3 | # Parser tests that want test.pl, eg to use runperl() for tests to show | |
4 | # reads through invalid pointers. | |
5 | # Note that this should still be runnable under miniperl. | |
6 | ||
7 | BEGIN { | |
d7186add | 8 | chdir 't' if -d 't'; |
1ce8be81 N |
9 | require './test.pl'; |
10 | set_up_inc( qw(. ../lib ) ); | |
d7186add HS |
11 | } |
12 | ||
1141a2c7 | 13 | plan(4); |
d7186add HS |
14 | |
15 | # [perl #130814] can reallocate lineptr while looking ahead for | |
16 | # "Missing $ on loop variable" diagnostic. | |
bce4a2ab HS |
17 | my $result = fresh_perl( |
18 | " foreach m0\n\$" . ("0" x 0x2000), | |
19 | { stderr => 1 }, | |
d7186add | 20 | ); |
bce4a2ab HS |
21 | is($result . "\n", <<EXPECT); |
22 | syntax error at - line 3, near "foreach m0 | |
d7186add | 23 | " |
bce4a2ab | 24 | Identifier too long at - line 3. |
d7186add HS |
25 | EXPECT |
26 | ||
36000cd1 TC |
27 | fresh_perl_is(<<EOS, <<'EXPECT', {}, "linestart before bufptr"); |
28 | \${ \xD5eeeeeeeeeeee | |
29 | 'x | |
30 | EOS | |
31 | Unrecognized character \xD5; marked by <-- HERE after ${ <-- HERE near column 4 at - line 1. | |
32 | EXPECT | |
33 | ||
3b8804a4 TC |
34 | fresh_perl_is(<<'EOS', <<'EXPECTED', {}, "use after free (#131836)"); |
35 | ${sub#xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx | |
36 | EOS | |
37 | Missing right curly or square bracket at - line 1, at end of line | |
38 | syntax error at - line 1, at EOF | |
39 | Execution of - aborted due to compilation errors. | |
40 | EXPECTED | |
41 | ||
1141a2c7 TC |
42 | SKIP: |
43 | { | |
44 | # [perl #131949] use after free | |
45 | # detected by ASAN | |
46 | # Win32 cmd.exe can't handle newlines well | |
47 | skip("Need POSIXish", 1) if $^O eq "MSWin32"; | |
48 | my $out = runperl(prog => "\@{ 0\n\n}", stderr => 1, non_portable => 1); | |
49 | is($out, "", "check for ASAN use after free"); | |
50 | } | |
51 | ||
d7186add HS |
52 | __END__ |
53 | # ex: set ts=8 sts=4 sw=4 et: |