1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41#![no_main]
use libfuzzer_sys::{fuzz_target, Corpus};
use lofty::file::AudioFile;
use lofty::file::{FileType, TaggedFileExt};
use lofty::probe::Probe;
const ALL_FILE_TYPES: &[FileType] = &[
FileType::Aac,
FileType::Aiff,
FileType::Ape,
FileType::Flac,
FileType::Mpeg,
FileType::Mp4,
FileType::Mpc,
FileType::Opus,
FileType::Vorbis,
FileType::Speex,
FileType::Wav,
FileType::WavPack,
];
fuzz_target!(|data: &[u8]| -> Corpus {
let mut corpus = Corpus::Reject;
for i in ALL_FILE_TYPES {
let s = std::io::Cursor::new(data);
let tagged_file = match Probe::with_file_type(s, *i).read() {
Ok(t) => t,
Err(_e) => {
continue;
}
};
corpus = Corpus::Keep;
tagged_file.properties();
tagged_file.tags();
tagged_file.primary_tag();
}
corpus
});