1 extern crate tiff;
2 
3 use tiff::decoder::Decoder;
4 use tiff::TiffResult;
5 
6 use std::fs::File;
7 
test_directory<F: Fn(File) -> bool>(path: &str, f: F)8 fn test_directory<F: Fn(File) -> bool>(path: &str, f: F) {
9     for entry in std::fs::read_dir(path).unwrap() {
10         let file = File::open(entry.unwrap().path()).unwrap();
11         assert!(f(file));
12     }
13 }
14 
decode_tiff(file: File) -> TiffResult<()>15 fn decode_tiff(file: File) -> TiffResult<()> {
16     let mut decoder = Decoder::new(file)?;
17     decoder.read_image()?;
18     Ok(())
19 }
20 
21 #[test]
oor_panic()22 fn oor_panic() {
23     test_directory("./tests/fuzz_images/oor_panic", |file| {
24         let _ = decode_tiff(file);
25         true
26     });
27 }
28 
29 #[test]
oom_crash()30 fn oom_crash() {
31     test_directory("./tests/fuzz_images/oom_crash", |file| {
32         decode_tiff(file).is_err()
33     });
34 }
35 
36 #[test]
inf_loop()37 fn inf_loop() {
38     test_directory("./tests/fuzz_images/inf_loop", |file| {
39         let _ = decode_tiff(file);
40         true
41     });
42 }
43 
44 // https://github.com/image-rs/image-tiff/issues/33
45 #[test]
divide_by_zero()46 fn divide_by_zero() {
47     test_directory("./tests/fuzz_images/divide_by_zero", |file| {
48         let _ = decode_tiff(file);
49         true
50     });
51 }
52