From 5f4fa0ad737eff3ed5ae3420b226b003339341ca Mon Sep 17 00:00:00 2001 From: Martijn van Beurden Date: Thu, 19 May 2022 12:10:02 +0200 Subject: [PATCH] Fix heap overflow when invalid encoder is used anyway --- src/libFLAC/stream_encoder.c | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/src/libFLAC/stream_encoder.c b/src/libFLAC/stream_encoder.c index b471fe4e..d515f966 100644 --- a/src/libFLAC/stream_encoder.c +++ b/src/libFLAC/stream_encoder.c @@ -2195,7 +2195,9 @@ FLAC_API FLAC__bool FLAC__stream_encoder_process(FLAC__StreamEncoder *encoder, c FLAC__ASSERT(0 != encoder); FLAC__ASSERT(0 != encoder->private_); FLAC__ASSERT(0 != encoder->protected_); - FLAC__ASSERT(encoder->protected_->state == FLAC__STREAM_ENCODER_OK); + + if(encoder->protected_->state != FLAC__STREAM_ENCODER_OK) + return false; do { const uint32_t n = flac_min(blocksize+OVERREAD_-encoder->private_->current_sample_number, samples-j); @@ -2260,7 +2262,9 @@ FLAC_API FLAC__bool FLAC__stream_encoder_process_interleaved(FLAC__StreamEncoder FLAC__ASSERT(0 != encoder); FLAC__ASSERT(0 != encoder->private_); FLAC__ASSERT(0 != encoder->protected_); - FLAC__ASSERT(encoder->protected_->state == FLAC__STREAM_ENCODER_OK); + + if(encoder->protected_->state != FLAC__STREAM_ENCODER_OK) + return false; j = k = 0; /*