diff --git a/libavformat/matroskadec.c b/libavformat/matroskadec.c index 18849af689..b074354116 100644 --- a/libavformat/matroskadec.c +++ b/libavformat/matroskadec.c @@ -3490,7 +3490,8 @@ static int matroska_read_header(AVFormatContext *s) if (!matroska->time_scale) matroska->time_scale = 1000000; - if (isnan(matroska->duration)) + if (isnan(matroska->duration) || matroska->duration < 0 || + matroska->duration >= (double)INT64_MAX / matroska->time_scale) matroska->duration = 0; if (matroska->duration) matroska->ctx->duration = matroska->duration * matroska->time_scale *