From 1b6a04ca5504955c571d1c97504fb45ea0befee4 Mon Sep 17 00:00:00 2001 From: Valentin Popov Date: Mon, 8 Jan 2024 01:21:28 +0400 Subject: Initial vendor packages Signed-off-by: Valentin Popov --- vendor/gif/tests/crashtest.rs | 28 ++++++++++++++++++++++++++++ 1 file changed, 28 insertions(+) create mode 100644 vendor/gif/tests/crashtest.rs (limited to 'vendor/gif/tests/crashtest.rs') diff --git a/vendor/gif/tests/crashtest.rs b/vendor/gif/tests/crashtest.rs new file mode 100644 index 0000000..ef67cb3 --- /dev/null +++ b/vendor/gif/tests/crashtest.rs @@ -0,0 +1,28 @@ +use std::{fs, io}; +use gif::DecodeOptions; + +#[test] +fn try_decode_crash_regression() { + let files = fs::read_dir(concat!(env!("CARGO_MANIFEST_DIR"), "/tests/crashtest")).unwrap(); + let options = DecodeOptions::new(); + + for entry in files { + let entry = entry.unwrap(); + if let Some(ext) = entry.path().extension() { + if ext.to_str() != Some("gif") { + panic!("Unexpected file {} in crashtests, should end with .gif", entry.path().display()); + } + } else { + panic!("Unexpected file {} in crashtests, should end with .gif", entry.path().display()); + } + + let file_data = fs::read(entry.path()).unwrap(); + let _ = try_decode_file(&options, file_data); + } +} + +fn try_decode_file(options: &DecodeOptions, data: Vec) -> Result<(), gif::DecodingError> { + let mut reader = options.clone().read_info(io::Cursor::new(data))?; + while reader.read_next_frame()?.is_some() {} + Ok(()) +} -- cgit v1.2.3