ffmdec: make sure the time base is valid
A negative time base can trigger assertions.
Signed-off-by: Andreas Cadhalpun <Andreas.Cadhalpun@googlemail.com>
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
(cherry picked from commit 4c91d81be2
)
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
This commit is contained in:

committed by
Michael Niedermayer

parent
819955f0c6
commit
0e16c3843a
@@ -331,6 +331,12 @@ static int ffm2_read_header(AVFormatContext *s)
|
|||||||
}
|
}
|
||||||
codec->time_base.num = avio_rb32(pb);
|
codec->time_base.num = avio_rb32(pb);
|
||||||
codec->time_base.den = avio_rb32(pb);
|
codec->time_base.den = avio_rb32(pb);
|
||||||
|
if (codec->time_base.num <= 0 || codec->time_base.den <= 0) {
|
||||||
|
av_log(s, AV_LOG_ERROR, "Invalid time base %d/%d\n",
|
||||||
|
codec->time_base.num, codec->time_base.den);
|
||||||
|
ret = AVERROR_INVALIDDATA;
|
||||||
|
goto fail;
|
||||||
|
}
|
||||||
codec->width = avio_rb16(pb);
|
codec->width = avio_rb16(pb);
|
||||||
codec->height = avio_rb16(pb);
|
codec->height = avio_rb16(pb);
|
||||||
codec->gop_size = avio_rb16(pb);
|
codec->gop_size = avio_rb16(pb);
|
||||||
@@ -503,6 +509,11 @@ static int ffm_read_header(AVFormatContext *s)
|
|||||||
case AVMEDIA_TYPE_VIDEO:
|
case AVMEDIA_TYPE_VIDEO:
|
||||||
codec->time_base.num = avio_rb32(pb);
|
codec->time_base.num = avio_rb32(pb);
|
||||||
codec->time_base.den = avio_rb32(pb);
|
codec->time_base.den = avio_rb32(pb);
|
||||||
|
if (codec->time_base.num <= 0 || codec->time_base.den <= 0) {
|
||||||
|
av_log(s, AV_LOG_ERROR, "Invalid time base %d/%d\n",
|
||||||
|
codec->time_base.num, codec->time_base.den);
|
||||||
|
goto fail;
|
||||||
|
}
|
||||||
codec->width = avio_rb16(pb);
|
codec->width = avio_rb16(pb);
|
||||||
codec->height = avio_rb16(pb);
|
codec->height = avio_rb16(pb);
|
||||||
codec->gop_size = avio_rb16(pb);
|
codec->gop_size = avio_rb16(pb);
|
||||||
|
Reference in New Issue
Block a user