d49bc4
commit e1575e4a7c5157cbf4e4a16dbd39b74f7174c7be
d49bc4
Author: Neelkamal Semwal <neelkamal.semwal@ittiam.com>
d49bc4
Date:   Fri Dec 18 22:28:36 2020 +0530
d49bc4
d49bc4
    libFlac: Exit at EOS in verify mode
d49bc4
    
d49bc4
    When verify mode is enabled, once decoder flags end of stream,
d49bc4
    encode processing is considered complete.
d49bc4
    
d49bc4
    CVE-2021-0561
d49bc4
    
d49bc4
    Signed-off-by: Ralph Giles <giles@thaumas.net>
d49bc4
d49bc4
diff --git a/src/libFLAC/stream_encoder.c b/src/libFLAC/stream_encoder.c
d49bc4
index 4c91247f..7109802c 100644
d49bc4
--- a/src/libFLAC/stream_encoder.c
d49bc4
+++ b/src/libFLAC/stream_encoder.c
d49bc4
@@ -2610,7 +2610,9 @@ FLAC__bool write_bitbuffer_(FLAC__StreamEncoder *encoder, uint32_t samples, FLAC
d49bc4
 			encoder->private_->verify.needs_magic_hack = true;
d49bc4
 		}
d49bc4
 		else {
d49bc4
-			if(!FLAC__stream_decoder_process_single(encoder->private_->verify.decoder)) {
d49bc4
+			if(!FLAC__stream_decoder_process_single(encoder->private_->verify.decoder)
d49bc4
+			    || (!is_last_block
d49bc4
+				    && (FLAC__stream_encoder_get_verify_decoder_state(encoder) == FLAC__STREAM_DECODER_END_OF_STREAM))) {
d49bc4
 				FLAC__bitwriter_release_buffer(encoder->private_->frame);
d49bc4
 				FLAC__bitwriter_clear(encoder->private_->frame);
d49bc4
 				if(encoder->protected_->state != FLAC__STREAM_ENCODER_VERIFY_MISMATCH_IN_AUDIO_DATA)