Skip to content

Commit d3cd3fd

Browse files
committed
fuzz: add decode_aac, fix compilation errors and simplify code
1 parent ad975ef commit d3cd3fd

File tree

4 files changed

+46
-30
lines changed

4 files changed

+46
-30
lines changed

symphonia/fuzz/Cargo.toml

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -34,3 +34,9 @@ name = "decode_mp3"
3434
path = "fuzz_targets/decode_mp3.rs"
3535
test = false
3636
doc = false
37+
38+
[[bin]]
39+
name = "decode_aac"
40+
path = "fuzz_targets/decode_aac.rs"
41+
test = false
42+
doc = false
Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
#![no_main]
2+
use libfuzzer_sys::fuzz_target;
3+
use symphonia::core::codecs::audio::{AudioCodecParameters, AudioDecoder};
4+
use symphonia::core::codecs::audio::well_known::CODEC_ID_AAC;
5+
use symphonia::core::formats::Packet;
6+
use symphonia::default::codecs::AacDecoder;
7+
8+
fuzz_target!(|data: Vec<u8>| {
9+
let mut codec_params = AudioCodecParameters::new();
10+
codec_params.for_codec(CODEC_ID_AAC);
11+
12+
if let Ok(mut decoder) = AacDecoder::try_new(&codec_params, &Default::default()) {
13+
let packet = Packet::new_from_boxed_slice(0, 0, 0, data.into_boxed_slice());
14+
decoder.decode(&packet).ok();
15+
}
16+
});
Lines changed: 17 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -1,39 +1,32 @@
11
#![no_main]
22
use libfuzzer_sys::fuzz_target;
3-
use symphonia::core::codecs::DecoderOptions;
3+
use symphonia::core::codecs::audio::AudioDecoderOptions;
44
use symphonia::core::formats::FormatOptions;
5+
use symphonia::core::formats::probe::Hint;
6+
use symphonia::core::formats::TrackType;
57
use symphonia::core::meta::MetadataOptions;
6-
use symphonia::core::probe::Hint;
78

89
fuzz_target!(|data: Vec<u8>| {
910
let data = std::io::Cursor::new(data);
10-
1111
let source = symphonia::core::io::MediaSourceStream::new(Box::new(data), Default::default());
12-
13-
match symphonia::default::get_probe().format(
12+
13+
if let Ok(mut format) = symphonia::default::get_probe().probe(
1414
&Hint::new(),
1515
source,
16-
&FormatOptions::default(),
17-
&MetadataOptions::default(),
16+
FormatOptions::default(),
17+
MetadataOptions::default(),
1818
) {
19-
Ok(mut probed) => {
20-
let track = probed.format.default_track().unwrap();
21-
22-
let mut decoder = match symphonia::default::get_codecs()
23-
.make(&track.codec_params, &DecoderOptions::default())
24-
{
25-
Ok(d) => d,
26-
Err(_) => return,
27-
};
28-
29-
loop {
30-
let packet = match probed.format.next_packet() {
31-
Ok(p) => p,
32-
Err(_) => return,
33-
};
34-
let _ = decoder.decode(&packet);
19+
if let Some(track) = format.default_track(TrackType::Audio) {
20+
if let Some(codec_params) = track.codec_params.as_ref() {
21+
if let Ok(mut decoder) = symphonia::default::get_codecs().make_audio_decoder(
22+
&codec_params.audio().unwrap(),
23+
&AudioDecoderOptions::default(),
24+
) {
25+
while let Ok(Some(packet)) = format.next_packet() {
26+
let _ = decoder.decode(&packet);
27+
}
28+
}
3529
}
3630
}
37-
Err(_) => {}
3831
}
3932
});
Lines changed: 7 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,15 +1,16 @@
11
#![no_main]
22
use libfuzzer_sys::fuzz_target;
3-
use symphonia::core::codecs::{CODEC_ID_MP3, CodecParameters, Decoder};
3+
use symphonia::core::codecs::audio::{AudioCodecParameters, AudioDecoder};
4+
use symphonia::core::codecs::audio::well_known::CODEC_ID_MP3;
45
use symphonia::core::formats::Packet;
56
use symphonia::default::codecs::MpaDecoder;
67

78
fuzz_target!(|data: Vec<u8>| {
8-
let mut codec_params = CodecParameters::new();
9+
let mut codec_params = AudioCodecParameters::new();
910
codec_params.for_codec(CODEC_ID_MP3);
1011

11-
let mut decoder = MpaDecoder::try_new(&codec_params, &Default::default()).unwrap();
12-
13-
let packet = Packet::new_from_boxed_slice(0, 0, 0, data.into_boxed_slice());
14-
let _ = decoder.decode(&packet);
12+
if let Ok(mut decoder) = MpaDecoder::try_new(&codec_params, &Default::default()) {
13+
let packet = Packet::new_from_boxed_slice(0, 0, 0, data.into_boxed_slice());
14+
decoder.decode(&packet).ok();
15+
}
1516
});

0 commit comments

Comments
 (0)