extern crate plist; use std::io::Cursor; use plist::{Plist, Result}; #[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\x0aAb\x90\x93\x9c\xa5\xbb\x00\x00\x00\x00\x00\x00\x01\x01\x00\x00\x00\x00\x00\x00\x00\x0f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xcd"; test_fuzzer_data_err(data); } // Issue 20 - not found by fuzzing but this is a convenient place to put the test. #[test] fn binary_with_data_in_trailer() { let data = b"bplist00\xd0\x08\0\0\0\0\0\0\x01\x01\0\0\0\0\0\0\0\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\t"; test_fuzzer_data_ok(data); } fn test_fuzzer_data(data: &[u8]) -> Result { let cursor = Cursor::new(data); Plist::read(cursor) } fn test_fuzzer_data_ok(data: &[u8]) { assert!(test_fuzzer_data(data).is_ok()); } fn test_fuzzer_data_err(data: &[u8]) { assert!(test_fuzzer_data(data).is_err()); }