diff --git a/tests/regression.rs b/tests/regression.rs index c79ec55..64ed47b 100644 --- a/tests/regression.rs +++ b/tests/regression.rs @@ -68,6 +68,10 @@ const TESTS_CASES: &[(&str, &[(&str, Option<&str>, u64, u64, u16, u32, &str, u8, ]) ]; +const CRASH_TESTS: &[&str] = &[ + "clusterfuzz-1.bin" +]; + #[test] fn test_regression() -> io::Result<()> { for (name, headers) in TESTS_CASES { @@ -112,5 +116,16 @@ fn test_regression() -> io::Result<()> { } } } + + for name in CRASH_TESTS { + println!("-------------\n{:?}", name); + let file = fs::File::open(format!("tests/regression/{}", name))?; + let mut lha_reader = delharc::LhaDecodeReader::new(&file)?; + assert!(lha_reader.is_decoder_supported()); + let mut sink = SinkSum::new(); + let err = io::copy(&mut lha_reader, &mut sink).unwrap_err(); + assert_eq!(&err.to_string(), "temporary codelen table has invalid size"); + } Ok(()) } + diff --git a/tests/regression/README b/tests/regression/README index ab1fccf..7b24921 100644 --- a/tests/regression/README +++ b/tests/regression/README @@ -46,3 +46,7 @@ comment.lzh - Archive created on Amiga with a file note embedded in the file name. Sent by @sonnenscheinchen https://github.com/royaltm/rust-delharc/issues/1 + +clusterfuzz-1.bin - A generated file that caused panic in LhaV2Decoder. + Sent by @micahsnyder + https://github.com/royaltm/rust-delharc/issues/7 diff --git a/tests/regression/clusterfuzz-1.bin b/tests/regression/clusterfuzz-1.bin new file mode 100644 index 0000000..094abab Binary files /dev/null and b/tests/regression/clusterfuzz-1.bin differ