aboutsummaryrefslogtreecommitdiffstats
path: root/tests/fuzzer.rs
blob: 4d7b151809053eb6e7690e69516fce6907514eb7 (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
extern crate plist;

use std::io::Cursor;
use plist::Plist;

#[test]
fn too_large_allocation() {
    let data = b"bplist00\"&L^^^^^^^^-^^^^^^^^^^^";
    test_fuzzer_data_err(data);
}

#[test]
fn too_large_allocation_2() {
    let data = b"bplist00;<)\x9fX\x0a<h\x0a:hhhhG:hh\x0amhhhhhhx#hhT)\x0a*";
    test_fuzzer_data_err(data);
}

#[test]
fn empty_offset_table() {
    let data = b"bplist00;\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00<)\x9fXTX(";
    test_fuzzer_data_err(data);
}

fn test_fuzzer_data_err(data: &[u8]) {
    let cursor = Cursor::new(data);
    let res = Plist::read(cursor);
    assert!(res.is_err());
}