lavf/utils: Avoid an overflow for huge negative durations.
authorCarl Eugen Hoyos <cehoyos@ag.or.at>
Sat, 24 Sep 2016 11:07:39 +0000 (13:07 +0200)
committerCarl Eugen Hoyos <cehoyos@ag.or.at>
Sat, 24 Sep 2016 19:07:19 +0000 (21:07 +0200)
Fixes ticket #5135.
(cherry picked from commit 267da70ea8c36caaa645a3c4f1c5f0ca8bae156a)

libavformat/utils.c

index d2a709c..f470c79 100644 (file)
@@ -2500,7 +2500,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 && start_time1 <= INT64_MAX - end_time1) {
+            if (end_time1 != AV_NOPTS_VALUE && (end_time1 > 0 ? start_time1 <= INT64_MAX - end_time1 : start_time1 >= INT64_MIN - end_time1)) {
                 end_time1 += start_time1;
                 end_time = FFMAX(end_time, end_time1);
             }