summaryrefslogtreecommitdiff
path: root/src/libFLAC/metadata_iterators.c
diff options
context:
space:
mode:
authorErik de Castro Lopo <erikd@mega-nerd.com>2016-05-01 20:34:26 +1000
committerErik de Castro Lopo <erikd@mega-nerd.com>2016-05-01 20:36:43 +1000
commit94386fdea50da72f167c32ecf375e45fab79cdec (patch)
treef081874bb1f73f0b46ea2c54a1b801544c2fbf31 /src/libFLAC/metadata_iterators.c
parent516a7ad4d9c8f5cdf7039d2a4c9019404daf8a73 (diff)
downloadflac-94386fdea50da72f167c32ecf375e45fab79cdec.tar.gz
libFLAC: Add metadata size checks to FLAC library
This follows on from the previous patch. Patch-from: lvqcl <lvqcl.mail@gmail.com>
Diffstat (limited to 'src/libFLAC/metadata_iterators.c')
-rw-r--r--src/libFLAC/metadata_iterators.c3
1 files changed, 3 insertions, 0 deletions
diff --git a/src/libFLAC/metadata_iterators.c b/src/libFLAC/metadata_iterators.c
index 9356416e..1acb19c6 100644
--- a/src/libFLAC/metadata_iterators.c
+++ b/src/libFLAC/metadata_iterators.c
@@ -2536,6 +2536,9 @@ FLAC__bool write_metadata_block_header_cb_(FLAC__IOHandle handle, FLAC__IOCallba
FLAC__byte buffer[FLAC__STREAM_METADATA_HEADER_LENGTH];
FLAC__ASSERT(block->length < (1u << FLAC__STREAM_METADATA_LENGTH_LEN));
+ /* double protection */
+ if(block->length >= (1u << FLAC__STREAM_METADATA_LENGTH_LEN))
+ return false;
buffer[0] = (block->is_last? 0x80 : 0) | (FLAC__byte)block->type;
pack_uint32_(block->length, buffer + 1, 3);