diff options
author | Martijn van Beurden <mvanb1@gmail.com> | 2022-05-07 20:00:06 +0200 |
---|---|---|
committer | Martijn van Beurden <mvanb1@gmail.com> | 2022-05-07 21:58:40 +0200 |
commit | b64ea1171bfa7424d2e3b2ffba50c58fa15769a7 (patch) | |
tree | d8bdb24afdd23b6e0dd5be3e8be5d321b550d5e7 /oss-fuzz | |
parent | b6e2f4f014ebb61d45ff3d42a7421ec525650e47 (diff) | |
download | flac-b64ea1171bfa7424d2e3b2ffba50c58fa15769a7.tar.gz |
Fix fuzzer_encoder_v2 timeouts
This fixes the 'false positive' oss-fuzz bug filed under
https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=47264
The fuzzer was timing out because of an enormous input (932kB)
combined with very slow settings. The commit disables certain
slow settings on inputs larger than 2^18 byte.
Diffstat (limited to 'oss-fuzz')
-rw-r--r-- | oss-fuzz/fuzzer_encoder_v2.cc | 12 |
1 files changed, 9 insertions, 3 deletions
diff --git a/oss-fuzz/fuzzer_encoder_v2.cc b/oss-fuzz/fuzzer_encoder_v2.cc index 2e8c9199..b6216a9d 100644 --- a/oss-fuzz/fuzzer_encoder_v2.cc +++ b/oss-fuzz/fuzzer_encoder_v2.cc @@ -119,9 +119,15 @@ extern "C" int LLVMFuzzerTestOneInput(const uint8_t *data, size_t size) encoder_valid &= FLAC__stream_encoder_set_min_residual_partition_order(encoder, min_residual_partition_order); encoder_valid &= FLAC__stream_encoder_set_max_residual_partition_order(encoder, max_residual_partition_order); - encoder_valid &= FLAC__stream_encoder_set_do_qlp_coeff_prec_search(encoder, data_bools[5]); - encoder_valid &= FLAC__stream_encoder_set_do_escape_coding(encoder, data_bools[6]); - encoder_valid &= FLAC__stream_encoder_set_do_exhaustive_model_search(encoder, data_bools[7]); + if(size < (1 << 18)) { + /* The following three options are **slow**, and when combined with a large input + * make fuzzers timeout, so only enable them on reasonably sized inputs. 2^17 is taken + * because that is the maximum blocksize * 4 (32-bit input) + */ + encoder_valid &= FLAC__stream_encoder_set_do_qlp_coeff_prec_search(encoder, data_bools[5]); + encoder_valid &= FLAC__stream_encoder_set_do_escape_coding(encoder, data_bools[6]); + encoder_valid &= FLAC__stream_encoder_set_do_exhaustive_model_search(encoder, data_bools[7]); + } encoder_valid &= FLAC__stream_encoder_set_do_mid_side_stereo(encoder, data_bools[8]); encoder_valid &= FLAC__stream_encoder_set_loose_mid_side_stereo(encoder, data_bools[9]); |