diff options
author | Martijn van Beurden <mvanb1@gmail.com> | 2022-06-17 21:00:13 +0200 |
---|---|---|
committer | Martijn van Beurden <mvanb1@gmail.com> | 2022-07-07 22:06:14 +0200 |
commit | b963ce0873d17afb23776cc212625e9e2b15ae4a (patch) | |
tree | 7b56abd7705160045b654adccaf308065f50c502 /src | |
parent | 46f3f3677237aba515d3f3260cb514873bf4ec35 (diff) | |
download | flac-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.c | 6 |
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; } |