aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAndreas Cadhalpun <Andreas.Cadhalpun@googlemail.com>2015-03-08 23:12:59 +0100
committerMichael Niedermayer <michaelni@gmx.at>2015-03-13 17:06:10 +0100
commit645a299132bad3a6f3cb95f01c18cb5e957cf934 (patch)
treeac401db72f19b405d6f4ca4c8c28cd9b5ae1bbb3
parentb8c5cd5b8d6e0c2f8a66217448b5dd247d1eba89 (diff)
downloadffmpeg-645a299132bad3a6f3cb95f01c18cb5e957cf934.tar.gz
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 4c91d81be23ffacfa3897b2bcfa77445bb0c2f89) Conflicts: libavformat/ffmdec.c (cherry picked from commit 9678ceb6976ca8194848b24535785a298521211f) Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
-rw-r--r--libavformat/ffmdec.c10
1 files changed, 10 insertions, 0 deletions
diff --git a/libavformat/ffmdec.c b/libavformat/ffmdec.c
index e927b21607..2b1891fa23 100644
--- a/libavformat/ffmdec.c
+++ b/libavformat/ffmdec.c
@@ -297,6 +297,11 @@ static int ffm2_read_header(AVFormatContext *s)
case MKBETAG('S', 'T', 'V', 'I'):
codec->time_base.num = 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->height = avio_rb16(pb);
codec->gop_size = avio_rb16(pb);
@@ -421,6 +426,11 @@ static int ffm_read_header(AVFormatContext *s)
case AVMEDIA_TYPE_VIDEO:
codec->time_base.num = 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->height = avio_rb16(pb);
codec->gop_size = avio_rb16(pb);