diff options
author | Martijn van Beurden <mvanb1@gmail.com> | 2022-08-12 16:30:23 +0200 |
---|---|---|
committer | Martijn van Beurden <mvanb1@gmail.com> | 2022-08-20 16:03:53 +0200 |
commit | c65483e2c20d1e9503ed9cebbdb3280b0ce1c3aa (patch) | |
tree | 134a27fd986c25094a90dffdfa5cfcff55db7b3c | |
parent | fbb6cb5c075d24ce35ccad6ca18f9cbbdb4e3d3f (diff) | |
download | flac-c65483e2c20d1e9503ed9cebbdb3280b0ce1c3aa.tar.gz |
Do not memset when allocation fails
Also remove some nearby unused code
-rw-r--r-- | oss-fuzz/fuzzer_encoder_v2.cc | 6 | ||||
-rw-r--r-- | src/libFLAC/stream_encoder.c | 24 |
2 files changed, 12 insertions, 18 deletions
diff --git a/oss-fuzz/fuzzer_encoder_v2.cc b/oss-fuzz/fuzzer_encoder_v2.cc index b00bc623..9300a1f0 100644 --- a/oss-fuzz/fuzzer_encoder_v2.cc +++ b/oss-fuzz/fuzzer_encoder_v2.cc @@ -166,7 +166,7 @@ extern "C" int LLVMFuzzerTestOneInput(const uint8_t *data, size_t size) } /* Disable alloc check if requested */ - if(data_bools[14]) + if(encoder_valid && data_bools[14]) alloc_check_threshold = INT32_MAX; /* data_bools[15] are spare */ @@ -286,7 +286,9 @@ extern "C" int LLVMFuzzerTestOneInput(const uint8_t *data, size_t size) state == FLAC__STREAM_ENCODER_UNINITIALIZED || state == FLAC__STREAM_ENCODER_CLIENT_ERROR || ((state == FLAC__STREAM_ENCODER_MEMORY_ALLOCATION_ERROR || - state == FLAC__STREAM_ENCODER_FRAMING_ERROR) && + state == FLAC__STREAM_ENCODER_FRAMING_ERROR || + (state == FLAC__STREAM_ENCODER_VERIFY_DECODER_ERROR && + FLAC__stream_encoder_get_verify_decoder_state(encoder) == FLAC__STREAM_DECODER_MEMORY_ALLOCATION_ERROR)) && alloc_check_threshold < INT32_MAX))) { fprintf(stderr,"-----\nERROR: stream encoder returned %s\n-----\n",FLAC__stream_encoder_get_resolved_state_string(encoder)); if(state == FLAC__STREAM_ENCODER_VERIFY_MISMATCH_IN_AUDIO_DATA) { diff --git a/src/libFLAC/stream_encoder.c b/src/libFLAC/stream_encoder.c index 87f8acc9..88ae974e 100644 --- a/src/libFLAC/stream_encoder.c +++ b/src/libFLAC/stream_encoder.c @@ -2576,25 +2576,17 @@ FLAC__bool resize_buffers_(FLAC__StreamEncoder *encoder, uint32_t new_blocksize) for(i = 0; ok && i < encoder->protected_->channels; i++) { ok = ok && FLAC__memory_alloc_aligned_int32_array(new_blocksize+4+OVERREAD_, &encoder->private_->integer_signal_unaligned[i], &encoder->private_->integer_signal[i]); - memset(encoder->private_->integer_signal[i], 0, sizeof(FLAC__int32)*4); - encoder->private_->integer_signal[i] += 4; -#ifndef FLAC__INTEGER_ONLY_LIBRARY -#if 0 /* @@@ currently unused */ - if(encoder->protected_->max_lpc_order > 0) - ok = ok && FLAC__memory_alloc_aligned_real_array(new_blocksize+OVERREAD_, &encoder->private_->real_signal_unaligned[i], &encoder->private_->real_signal[i]); -#endif -#endif + if(ok) { + memset(encoder->private_->integer_signal[i], 0, sizeof(FLAC__int32)*4); + encoder->private_->integer_signal[i] += 4; + } } for(i = 0; ok && i < 2; i++) { ok = ok && FLAC__memory_alloc_aligned_int32_array(new_blocksize+4+OVERREAD_, &encoder->private_->integer_signal_mid_side_unaligned[i], &encoder->private_->integer_signal_mid_side[i]); - memset(encoder->private_->integer_signal_mid_side[i], 0, sizeof(FLAC__int32)*4); - encoder->private_->integer_signal_mid_side[i] += 4; -#ifndef FLAC__INTEGER_ONLY_LIBRARY -#if 0 /* @@@ currently unused */ - if(encoder->protected_->max_lpc_order > 0) - ok = ok && FLAC__memory_alloc_aligned_real_array(new_blocksize+OVERREAD_, &encoder->private_->real_signal_mid_side_unaligned[i], &encoder->private_->real_signal_mid_side[i]); -#endif -#endif + if(ok) { + memset(encoder->private_->integer_signal_mid_side[i], 0, sizeof(FLAC__int32)*4); + encoder->private_->integer_signal_mid_side[i] += 4; + } } ok = ok && FLAC__memory_alloc_aligned_int64_array(new_blocksize+4+OVERREAD_, &encoder->private_->integer_signal_33bit_side_unaligned, &encoder->private_->integer_signal_33bit_side); #ifndef FLAC__INTEGER_ONLY_LIBRARY |