Fix initialization of encoder fuzzer (v1)

The encoder fuzzer initialized before setting up. This is now swapped
without upsetting the way the datasource is queried
This commit is contained in:
Martijn van Beurden 2022-05-19 11:12:15 +02:00
parent 383b77fa08
commit 74b093f6e1
1 changed files with 16 additions and 10 deletions

View File

@ -62,23 +62,15 @@ namespace FLAC {
extern "C" int LLVMFuzzerTestOneInput(const uint8_t *data, size_t size) {
fuzzing::datasource::Datasource ds(data, size);
FLAC::Encoder::FuzzerStream encoder(ds);
bool use_ogg;
const int channels = 2;
encoder.set_channels(channels);
encoder.set_bits_per_sample(16);
try {
::FLAC__StreamEncoderInitStatus ret;
if ( ds.Get<bool>() ) {
ret = encoder.init();
} else {
ret = encoder.init_ogg();
}
if ( ret != FLAC__STREAM_ENCODER_INIT_STATUS_OK ) {
goto end;
}
use_ogg = ! ds.Get<bool>();
{
const bool res = encoder.set_streamable_subset(ds.Get<bool>());
@ -146,6 +138,20 @@ extern "C" int LLVMFuzzerTestOneInput(const uint8_t *data, size_t size) {
fuzzing::memory::memory_test(res);
}
{
::FLAC__StreamEncoderInitStatus ret;
if ( !use_ogg ) {
ret = encoder.init();
} else {
ret = encoder.init_ogg();
}
if ( ret != FLAC__STREAM_ENCODER_INIT_STATUS_OK ) {
goto end;
}
}
while ( ds.Get<bool>() ) {
{
auto dat = ds.GetVector<FLAC__int32>();