From f889bca6d1e704ba15c307a0d4c189b6ede2a01b Mon Sep 17 00:00:00 2001 From: Syoyo Fujita Date: Mon, 26 Sep 2022 18:58:10 +0900 Subject: [PATCH] Add dr_wav decoder fuzzer --- tests/fuzzer/dr_wav_decoding_fuzzmain.cc | 31 ++++++++++++++++++++++++ tests/fuzzer/meson.build | 7 ++++++ 2 files changed, 38 insertions(+) create mode 100644 tests/fuzzer/dr_wav_decoding_fuzzmain.cc diff --git a/tests/fuzzer/dr_wav_decoding_fuzzmain.cc b/tests/fuzzer/dr_wav_decoding_fuzzmain.cc new file mode 100644 index 00000000..a1cd4eac --- /dev/null +++ b/tests/fuzzer/dr_wav_decoding_fuzzmain.cc @@ -0,0 +1,31 @@ +#include + +#define DR_WAV_IMPLEMENTATION +#include "external/dr_wav.h" + +static int parse_wav(const uint8_t* data, size_t size) { + if (size > 1024 * 1024 * 128 * 4) { + return -1; + } + + uint32_t channels; + uint32_t sampleRate; + drwav_uint64 totalFrameCount; + + float* psampledata = drwav_open_memory_and_read_pcm_frames_f32( + data, size, &channels, &sampleRate, &totalFrameCount, /* alloc callbacks */nullptr); + + if (!data) { + // err + return 0; + } + + drwav_free(psampledata, /* alloc callbacks */nullptr ); + + return 0; +} + +extern "C" int LLVMFuzzerTestOneInput(std::uint8_t const* data, + std::size_t size) { + return parse_wav(data, size); +} diff --git a/tests/fuzzer/meson.build b/tests/fuzzer/meson.build index a4b46128..ac196172 100644 --- a/tests/fuzzer/meson.build +++ b/tests/fuzzer/meson.build @@ -101,3 +101,10 @@ executable('fuzz_dr_mp3_decoding', include_directories : incdirs, cpp_args : ['-fsanitize=address,fuzzer', '-DTINYUSDZ_FUZZER_BUILD=1'], link_args : '-fsanitize=address,fuzzer' ) + +executable('fuzz_dr_wav_decoding', + 'dr_wav_decoding_fuzzmain.cc', + install: true, + include_directories : incdirs, + cpp_args : ['-fsanitize=address,fuzzer', '-DTINYUSDZ_FUZZER_BUILD=1'], + link_args : '-fsanitize=address,fuzzer' )