Browse Source

avformat/oggparseopus: Check that granule pos is within the supported range

Larger values would imply file durations of astronomic proportions and cause
overflows

Fixes integer overflow
Fixes: usan_int64_overflow

Found-by: Thomas Guilbert <tguilbert@google.com>
Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
(cherry picked from commit 8efaee3710)

Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
tags/n2.8.8
Michael Niedermayer 9 years ago
parent
commit
3bbef6082a
1 changed files with 4 additions and 0 deletions
  1. +4
    -0
      libavformat/oggparseopus.c

+ 4
- 0
libavformat/oggparseopus.c View File

@@ -117,6 +117,10 @@ static int opus_packet(AVFormatContext *avf, int idx)

if (!os->psize)
return AVERROR_INVALIDDATA;
if (os->granule > INT64_MAX - UINT32_MAX) {
av_log(avf, AV_LOG_ERROR, "Unsupported huge granule pos %"PRId64 "\n", os->granule);
return AVERROR_INVALIDDATA;
}

if ((!os->lastpts || os->lastpts == AV_NOPTS_VALUE) && !(os->flags & OGG_FLAG_EOS)) {
int seg, d;


Loading…
Cancel
Save