Browse Source

check time_base.den for mpeg4
avoid zero time_base.* for h263

Originally committed as revision 4483 to svn://svn.ffmpeg.org/ffmpeg/trunk

Michael Niedermayer 19 years ago
parent
commit
efbc614de0
1 changed files with 5 additions and 0 deletions
  1. 5 0
      libavcodec/h263.c

+ 5 - 0
libavcodec/h263.c

@@ -5156,6 +5156,7 @@ int h263_decode_picture_header(MpegEncContext *s)
                 s->avctx->time_base.num*= get_bits(&s->gb, 7);
                 s->avctx->time_base.num*= get_bits(&s->gb, 7);
                 if(s->avctx->time_base.num == 0){
                 if(s->avctx->time_base.num == 0){
                     av_log(s, AV_LOG_ERROR, "zero framerate\n");
                     av_log(s, AV_LOG_ERROR, "zero framerate\n");
+                    s->avctx->time_base= (AVRational){1001, 30000}; //prevent crash
                     return -1;
                     return -1;
                 }
                 }
                 gcd= ff_gcd(s->avctx->time_base.den, s->avctx->time_base.num);
                 gcd= ff_gcd(s->avctx->time_base.den, s->avctx->time_base.num);
@@ -5538,6 +5539,10 @@ static int decode_vol_header(MpegEncContext *s, GetBitContext *gb){
     check_marker(gb, "before time_increment_resolution");
     check_marker(gb, "before time_increment_resolution");
     
     
     s->avctx->time_base.den = get_bits(gb, 16);
     s->avctx->time_base.den = get_bits(gb, 16);
+    if(!s->avctx->time_base.den){
+        av_log(s->avctx, AV_LOG_ERROR, "time_base.den==0\n");
+        return -1;
+    }
     
     
     s->time_increment_bits = av_log2(s->avctx->time_base.den - 1) + 1;
     s->time_increment_bits = av_log2(s->avctx->time_base.den - 1) + 1;
     if (s->time_increment_bits < 1)
     if (s->time_increment_bits < 1)