summaryrefslogtreecommitdiff
path: root/libavformat/utils.c
diff options
context:
space:
mode:
authorMichael Niedermayer <michaelni@gmx.at>2013-01-08 00:24:46 +0100
committerMichael Niedermayer <michaelni@gmx.at>2013-01-08 00:28:35 +0100
commit953061ed9537f2eecd814842aca6a6fdf8118385 (patch)
tree4c959a870e9c1143e38a221fe6072421c8c79013 /libavformat/utils.c
parent3b57bb478ff4455773378355e285877d757e151e (diff)
lavf/utils: more complete dts checks
Fixes division by zero Found-by: Mateusz "j00ru" Jurczyk and Gynvael Coldwind Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
Diffstat (limited to 'libavformat/utils.c')
-rw-r--r--libavformat/utils.c3
1 files changed, 2 insertions, 1 deletions
diff --git a/libavformat/utils.c b/libavformat/utils.c
index 5cbf7ca7af..6f75e4314f 100644
--- a/libavformat/utils.c
+++ b/libavformat/utils.c
@@ -2861,7 +2861,8 @@ int avformat_find_stream_info(AVFormatContext *ic, AVDictionary **options)
{
int64_t last = st->info->last_dts;
- if(pkt->dts != AV_NOPTS_VALUE && last != AV_NOPTS_VALUE && pkt->dts > last){
+ if( pkt->dts != AV_NOPTS_VALUE && last != AV_NOPTS_VALUE && pkt->dts > last
+ && pkt->dts - (uint64_t)last < INT64_MAX){
double dts= (is_relative(pkt->dts) ? pkt->dts - RELATIVE_TS_BASE : pkt->dts) * av_q2d(st->time_base);
int64_t duration= pkt->dts - last;