CNG fuzzer: avoid long fuzzer runs by limiting generator calls

The number of calls to ComfortNoiseDecoder::Generate() was determined
by the fuzzer input, and was chosen between 0 and 255. This would
sometimes lead to very long runs, with questionable merit. With this
change, the number of call to Generate() is limited to 17 (an
arbitrary small integer).

Bug: chromium:820078
Change-Id: I27b5c7f0b72d53370d002a6b157d4451079a0ba9
Reviewed-on: https://webrtc-review.googlesource.com/60941
Reviewed-by: Alex Loiko <aleloi@webrtc.org>
Commit-Queue: Henrik Lundin <henrik.lundin@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#22360}
This commit is contained in:
Henrik Lundin
2018-03-09 10:25:39 +01:00
committed by Commit Bot
parent 3285897c1f
commit 8fabab1509

View File

@ -8,6 +8,8 @@
* be found in the AUTHORS file in the root of the source tree.
*/
#include <algorithm>
#include "api/array_view.h"
#include "modules/audio_coding/codecs/cng/webrtc_cng.h"
#include "rtc_base/buffer.h"
@ -35,7 +37,8 @@ void FuzzOneInputTest(rtc::ArrayView<const uint8_t> data) {
const bool new_period = fuzz_data.SelectOneOf(kTrueOrFalse);
constexpr size_t kOutputSizes[] = {80, 160, 320, 480};
const size_t output_size = fuzz_data.SelectOneOf(kOutputSizes);
const size_t num_generate_calls = fuzz_data.Read<uint8_t>();
const size_t num_generate_calls =
std::min(fuzz_data.Read<uint8_t>(), static_cast<uint8_t>(17));
rtc::BufferT<int16_t> output(output_size);
for (size_t i = 0; i < num_generate_calls; ++i) {
cng_decoder.Generate(output, new_period);