From 8efaee3710baa87af40556a622bf2d96a27c6425 Mon Sep 17 00:00:00 2001 From: Michael Niedermayer Date: Tue, 10 May 2016 23:12:58 +0200 Subject: [PATCH] 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 Signed-off-by: Michael Niedermayer --- libavformat/oggparseopus.c | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/libavformat/oggparseopus.c b/libavformat/oggparseopus.c index 8191b1083c..99aa4398dd 100644 --- a/libavformat/oggparseopus.c +++ b/libavformat/oggparseopus.c @@ -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;