aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMichael Niedermayer <michael@niedermayer.cc>2016-05-28 23:51:35 +0200
committerMichael Niedermayer <michael@niedermayer.cc>2016-06-05 02:40:31 +0200
commitcc1e01d8b67f41659cb03f2500f18fe5df647ff1 (patch)
tree7032b76fad3f1890a21060e5fb0d1cff36b77776
parent69c3dfdd548f25d7bd260afbf59987e37eb60f33 (diff)
downloadandroid_external_ffmpeg-cc1e01d8b67f41659cb03f2500f18fe5df647ff1.tar.gz
android_external_ffmpeg-cc1e01d8b67f41659cb03f2500f18fe5df647ff1.tar.bz2
android_external_ffmpeg-cc1e01d8b67f41659cb03f2500f18fe5df647ff1.zip
avformat/utils: avoid overflow in update_stream_timings() with huge durations
Fixes: usan_granule_overflow Found-by: Thomas Guilbert <tguilbert@google.com> Signed-off-by: Michael Niedermayer <michael@niedermayer.cc> (cherry picked from commit 2be3007ed55f1513bcae3d2a076e71878f48eb03) Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
-rw-r--r--libavformat/utils.c2
1 files changed, 1 insertions, 1 deletions
diff --git a/libavformat/utils.c b/libavformat/utils.c
index 7ed21b6762..fe684c352d 100644
--- a/libavformat/utils.c
+++ b/libavformat/utils.c
@@ -2370,7 +2370,7 @@ static void update_stream_timings(AVFormatContext *ic)
end_time1 = av_rescale_q_rnd(st->duration, st->time_base,
AV_TIME_BASE_Q,
AV_ROUND_NEAR_INF|AV_ROUND_PASS_MINMAX);
- if (end_time1 != AV_NOPTS_VALUE) {
+ if (end_time1 != AV_NOPTS_VALUE && start_time1 <= INT64_MAX - end_time1) {
end_time1 += start_time1;
end_time = FFMAX(end_time, end_time1);
}