diff options
author | Neelkamal Semwal <neelkamal.semwal@ittiam.com> | 2020-12-18 22:28:36 +0530 |
---|---|---|
committer | Ralph Giles <giles@thaumas.net> | 2022-02-08 20:49:09 -0800 |
commit | e1575e4a7c5157cbf4e4a16dbd39b74f7174c7be (patch) | |
tree | 174cf374d3e5e2c56f03613ca9329851a39ff21e /src | |
parent | 479f6038d9680be8f1660ab883a646973d881f80 (diff) | |
download | flac-e1575e4a7c5157cbf4e4a16dbd39b74f7174c7be.tar.gz |
libFlac: Exit at EOS in verify mode
When verify mode is enabled, once decoder flags end of stream,
encode processing is considered complete.
CVE-2021-0561
Signed-off-by: Ralph Giles <giles@thaumas.net>
Diffstat (limited to 'src')
-rw-r--r-- | src/libFLAC/stream_encoder.c | 4 |
1 files changed, 3 insertions, 1 deletions
diff --git a/src/libFLAC/stream_encoder.c b/src/libFLAC/stream_encoder.c index 4c91247f..7109802c 100644 --- a/src/libFLAC/stream_encoder.c +++ b/src/libFLAC/stream_encoder.c @@ -2610,7 +2610,9 @@ FLAC__bool write_bitbuffer_(FLAC__StreamEncoder *encoder, uint32_t samples, FLAC encoder->private_->verify.needs_magic_hack = true; } else { - if(!FLAC__stream_decoder_process_single(encoder->private_->verify.decoder)) { + if(!FLAC__stream_decoder_process_single(encoder->private_->verify.decoder) + || (!is_last_block + && (FLAC__stream_encoder_get_verify_decoder_state(encoder) == FLAC__STREAM_DECODER_END_OF_STREAM))) { FLAC__bitwriter_release_buffer(encoder->private_->frame); FLAC__bitwriter_clear(encoder->private_->frame); if(encoder->protected_->state != FLAC__STREAM_ENCODER_VERIFY_MISMATCH_IN_AUDIO_DATA) |