Skip to content

Commit

Permalink
obu: Do not parse more than obu_size bytes
Browse files Browse the repository at this point in the history
When trying to parse a sequence header, parse only obu_size bytes.

The current code ignores obu_size and parses as long as it sees
data and could end up over-reading into other obus.
  • Loading branch information
vigneshvg committed May 1, 2024
1 parent 2be0ec9 commit 4c7f0f4
Showing 1 changed file with 4 additions and 2 deletions.
6 changes: 4 additions & 2 deletions src/obu.c
Expand Up @@ -439,12 +439,14 @@ avifBool avifSequenceHeaderParse(avifSequenceHeader * header, const avifROData *
return AVIF_FALSE;

if (obu_type == 1) { // Sequence Header
avifBits seqHdrBits;
avifBitsInit(&seqHdrBits, obus.data + init_byte_pos, obu_size);
switch (codecType) {
case AVIF_CODEC_TYPE_AV1:
return parseAV1SequenceHeader(&bits, header);
return parseAV1SequenceHeader(&seqHdrBits, header);
#if defined(AVIF_CODEC_AVM)
case AVIF_CODEC_TYPE_AV2:
return parseAV2SequenceHeader(&bits, header);
return parseAV2SequenceHeader(&seqHdrBits, header);
#endif
default:
return AVIF_FALSE;
Expand Down

0 comments on commit 4c7f0f4

Please sign in to comment.