summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorMartijn van Beurden <mvanb1@gmail.com>2022-06-17 21:00:13 +0200
committerMartijn van Beurden <mvanb1@gmail.com>2022-07-07 22:06:14 +0200
commitb963ce0873d17afb23776cc212625e9e2b15ae4a (patch)
tree7b56abd7705160045b654adccaf308065f50c502 /src
parent46f3f3677237aba515d3f3260cb514873bf4ec35 (diff)
downloadflac-b963ce0873d17afb23776cc212625e9e2b15ae4a.tar.gz
Check chain length Ogg FLAC file
When a metadata chain was read from an Ogg FLAC file containing no metadata (but otherwise valid), an empty chain could be returned, leading to null derefencing on trying to manipulate it. This commit adds a check for the chain length
Diffstat (limited to 'src')
-rw-r--r--src/libFLAC/metadata_iterators.c6
1 files changed, 6 insertions, 0 deletions
diff --git a/src/libFLAC/metadata_iterators.c b/src/libFLAC/metadata_iterators.c
index 7f019d72..55562b43 100644
--- a/src/libFLAC/metadata_iterators.c
+++ b/src/libFLAC/metadata_iterators.c
@@ -1360,6 +1360,12 @@ static FLAC__bool chain_read_ogg_cb_(FLAC__Metadata_Chain *chain, FLAC__IOHandle
chain->initial_length = chain_calculate_length_(chain);
+ if(chain->initial_length == 0) {
+ /* Ogg FLAC file must have at least streaminfo and vorbis comment */
+ chain->status = FLAC__METADATA_CHAIN_STATUS_BAD_METADATA;
+ return false;
+ }
+
return true;
}