summaryrefslogtreecommitdiff
path: root/oss-fuzz
diff options
context:
space:
mode:
authorMartijn van Beurden <mvanb1@gmail.com>2022-05-07 20:00:06 +0200
committerMartijn van Beurden <mvanb1@gmail.com>2022-05-07 21:58:40 +0200
commitb64ea1171bfa7424d2e3b2ffba50c58fa15769a7 (patch)
treed8bdb24afdd23b6e0dd5be3e8be5d321b550d5e7 /oss-fuzz
parentb6e2f4f014ebb61d45ff3d42a7421ec525650e47 (diff)
downloadflac-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.cc12
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]);