lofty-rs/lofty/tests/fuzz/main.rs

47 lines
1 KiB
Rust
Raw Permalink Normal View History

use lofty::config::ParseOptions;
2024-04-10 18:08:28 +00:00
use lofty::prelude::*;
use std::io::Cursor;
use std::path::Path;
use std::thread;
use std::time::Instant;
mod aacfile_read_from;
mod aifffile_read_from;
mod flacfile_read_from;
mod id3v2;
mod mp4file_read_from;
mod mpcfile_read_from;
2022-07-24 20:25:08 +00:00
mod mpegfile_read_from;
mod opusfile_read_from;
mod pictureinformation_from_jpeg;
mod pictureinformation_from_png;
mod speexfile_read_from;
mod vorbisfile_read_from;
mod wavfile_read_from;
mod wavpackfile_read_from;
2024-05-04 20:41:40 +00:00
#[allow(clippy::missing_panics_doc)]
pub fn get_reader(path: &str) -> Cursor<Vec<u8>> {
let path = Path::new("tests/fuzz/assets").join(path);
let b = std::fs::read(path).unwrap();
Cursor::new(b)
}
2024-05-04 20:41:40 +00:00
#[allow(clippy::missing_panics_doc)]
pub fn oom_test<A: AudioFile>(path: &'static str) {
let instant = Instant::now();
let thread = thread::spawn(|| {
2022-09-24 06:34:22 +00:00
let _ = <A as AudioFile>::read_from(&mut get_reader(path), ParseOptions::new());
});
while instant.elapsed().as_secs() < 3 {
if thread.is_finished() {
return;
}
}
panic!("Failed to run test");
}