summaryrefslogtreecommitdiff
path: root/ext/HTML/Parser/t/crashme.t
blob: 1a1e8e47c970a57890bfcc749c1c45571cc2c453 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
#!/usr/bin/perl

# This test will simply run the parser on random junk.

my $no_tests = shift || 3;
use Test::More;
plan tests => $no_tests;

use HTML::Parser ();

my $file = "junk$$.html";
die if -e $file;

for (1..$no_tests) {

    open(JUNK, ">$file") || die;
    for (1 .. rand(5000)) {
        for (1 .. rand(200)) {
            print JUNK pack("N", rand(2**32));
        }
        print JUNK ("<", "&", ">")[rand(3)];  # make these a bit more likely
    }
    close(JUNK);

    #diag "Parse @{[-s $file]} bytes of junk";

    HTML::Parser->new->parse_file($file);
    pass();

    #print_mem();
}

unlink($file);


sub print_mem
{
    # this probably only works on Linux
    open(STAT, "/proc/self/status") || return;
    while (<STAT>) {
        diag $_ if /^VmSize/;
    }
}