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)8fn 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<()>15fn decode_tiff(file: File) -> TiffResult<()> { 16 let mut decoder = Decoder::new(file)?; 17 decoder.read_image()?; 18 Ok(()) 19 } 20 21 #[test] oor_panic()22fn 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()30fn oom_crash() { 31 test_directory("./tests/fuzz_images/oom_crash", |file| { 32 decode_tiff(file).is_err() 33 }); 34 } 35 36 #[test] inf_loop()37fn 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()46fn divide_by_zero() { 47 test_directory("./tests/fuzz_images/divide_by_zero", |file| { 48 let _ = decode_tiff(file); 49 true 50 }); 51 } 52