aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMartijn van Beurden <mvanb1@gmail.com>2023-06-01 16:50:27 +0200
committerGitHub <noreply@github.com>2023-06-01 16:50:27 +0200
commit6a9c1664b37d1a395f510746123e46d2395f004a (patch)
tree14da89a6a81f0969f0941f8417f5c8fce89824f4
parentd6974b9702a80bbea7eaee81c60cb491fe81e175 (diff)
downloadflac-6a9c1664b37d1a395f510746123e46d2395f004a.tar.gz
Check that seektable length > 0
-rw-r--r--src/libFLAC/stream_decoder.c12
1 files changed, 7 insertions, 5 deletions
diff --git a/src/libFLAC/stream_decoder.c b/src/libFLAC/stream_decoder.c
index 6c82cbd7..d66d2ccb 100644
--- a/src/libFLAC/stream_decoder.c
+++ b/src/libFLAC/stream_decoder.c
@@ -1415,12 +1415,14 @@ FLAC__bool read_metadata_(FLAC__StreamDecoder *decoder)
/* just in case we already have a seek table, and reading the next one fails: */
decoder->private_->has_seek_table = false;
- if(!read_metadata_seektable_(decoder, is_last, length))
- return false;
+ if(length > 0) {
+ if(!read_metadata_seektable_(decoder, is_last, length))
+ return false;
- decoder->private_->has_seek_table = true;
- if(!decoder->private_->is_seeking && decoder->private_->metadata_filter[FLAC__METADATA_TYPE_SEEKTABLE] && decoder->private_->metadata_callback)
- decoder->private_->metadata_callback(decoder, &decoder->private_->seek_table, decoder->private_->client_data);
+ decoder->private_->has_seek_table = true;
+ if(!decoder->private_->is_seeking && decoder->private_->metadata_filter[FLAC__METADATA_TYPE_SEEKTABLE] && decoder->private_->metadata_callback)
+ decoder->private_->metadata_callback(decoder, &decoder->private_->seek_table, decoder->private_->client_data);
+ }
}
else {
FLAC__bool skip_it = !decoder->private_->metadata_filter[type];