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>
pull/191/merge
Michael Niedermayer 9 years ago
parent af56d0dffa
commit 2be3007ed5
  1. 2
      libavformat/utils.c

@ -2491,7 +2491,7 @@ static void update_stream_timings(AVFormatContext *ic)
end_time1 = av_rescale_q_rnd(st->duration, st->time_base, end_time1 = av_rescale_q_rnd(st->duration, st->time_base,
AV_TIME_BASE_Q, AV_TIME_BASE_Q,
AV_ROUND_NEAR_INF|AV_ROUND_PASS_MINMAX); 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_time1 += start_time1;
end_time = FFMAX(end_time, end_time1); end_time = FFMAX(end_time, end_time1);
} }

Loading…
Cancel
Save