diff --git a/fuzz/Cargo.toml b/fuzz/Cargo.toml index c4f8591be..ea609a5c3 100644 --- a/fuzz/Cargo.toml +++ b/fuzz/Cargo.toml @@ -42,6 +42,10 @@ path = "fuzz_targets/aifffile_read_from.rs" name = "apefile_read_from" path = "fuzz_targets/apefile_read_from.rs" +[[bin]] +name = "ebmlfile_read_from" +path = "fuzz_targets/ebmlfile_read_from.rs" + [[bin]] name = "flacfile_read_from" path = "fuzz_targets/flacfile_read_from.rs" diff --git a/fuzz/fuzz_targets/ebmlfile_read_from.rs b/fuzz/fuzz_targets/ebmlfile_read_from.rs new file mode 100644 index 000000000..21b46a9ed --- /dev/null +++ b/fuzz/fuzz_targets/ebmlfile_read_from.rs @@ -0,0 +1,11 @@ +#![no_main] + +use std::io::Cursor; + +use libfuzzer_sys::fuzz_target; +use lofty::config::ParseOptions; +use lofty::file::AudioFile; + +fuzz_target!(|data: Vec| { + let _ = lofty::ebml::EbmlFile::read_from(&mut Cursor::new(data), ParseOptions::new()); +}); diff --git a/lofty/src/ebml/read/segment.rs b/lofty/src/ebml/read/segment.rs index 4db543ba2..1b94ac996 100644 --- a/lofty/src/ebml/read/segment.rs +++ b/lofty/src/ebml/read/segment.rs @@ -38,14 +38,11 @@ where ElementIdent::Tracks if parse_options.read_properties => { segment_tracks::read_from(element_reader, parse_options, properties)? }, - ElementIdent::Tags | ElementIdent::Chapters if parse_options.read_tags => { + // TODO: ElementIdent::Chapters + ElementIdent::Tags if parse_options.read_tags => { let mut tag = tags.unwrap_or_default(); - if id == ElementIdent::Tags { - segment_tags::read_from(element_reader, parse_options, &mut tag)? - } else { - segment_chapters::read_from(element_reader, parse_options, &mut tag)? - } + segment_tags::read_from(element_reader, parse_options, &mut tag)?; tags = Some(tag); }, diff --git a/lofty/src/ebml/read/segment_chapters.rs b/lofty/src/ebml/read/segment_chapters.rs index da4b3ba37..5e02e1c9d 100644 --- a/lofty/src/ebml/read/segment_chapters.rs +++ b/lofty/src/ebml/read/segment_chapters.rs @@ -5,6 +5,7 @@ use crate::error::Result; use std::io::{Read, Seek}; +#[allow(dead_code)] pub(super) fn read_from( _element_reader: &mut ElementReader, _parse_options: ParseOptions, diff --git a/lofty/tests/fuzz/assets/ebmlfile_read_from/.gitkeep b/lofty/tests/fuzz/assets/ebmlfile_read_from/.gitkeep new file mode 100644 index 000000000..e69de29bb diff --git a/lofty/tests/fuzz/ebmlfile_read_from.rs b/lofty/tests/fuzz/ebmlfile_read_from.rs new file mode 100644 index 000000000..e69de29bb diff --git a/lofty/tests/fuzz/main.rs b/lofty/tests/fuzz/main.rs index 7ffb41c0d..04b3c5d56 100644 --- a/lofty/tests/fuzz/main.rs +++ b/lofty/tests/fuzz/main.rs @@ -7,6 +7,7 @@ use std::thread; use std::time::Instant; mod aifffile_read_from; +mod ebmlfile_read_from; mod flacfile_read_from; mod id3v2; mod mp4file_read_from;