avvidenc: guard against division by zero
authorVincent Penquerc'h <vincent.penquerch@collabora.co.uk>
Wed, 30 Apr 2014 14:59:04 +0000 (15:59 +0100)
committerVincent Penquerc'h <vincent.penquerch@collabora.co.uk>
Wed, 30 Apr 2014 17:18:50 +0000 (18:18 +0100)
and other nonsensical time base values while we're at it.

Coverity 1139699

ext/libav/gstavvidenc.c

index bbf3f0d..c01efaf 100644 (file)
@@ -381,6 +381,11 @@ gst_ffmpegvidenc_set_format (GstVideoEncoder * encoder,
   /* fetch pix_fmt, fps, par, width, height... */
   gst_ffmpeg_videoinfo_to_context (&state->info, ffmpegenc->context);
 
+  /* sanitize time base */
+  if (ffmpegenc->context->time_base.num <= 0
+      || ffmpegenc->context->time_base.den <= 0)
+    goto insane_timebase;
+
   if ((oclass->in_plugin->id == AV_CODEC_ID_MPEG4)
       && (ffmpegenc->context->time_base.den > 65535)) {
     /* MPEG4 Standards do not support time_base denominator greater than
@@ -529,6 +534,13 @@ unsupported_codec:
     GST_DEBUG ("Unsupported codec - no caps found");
     return FALSE;
   }
+
+insane_timebase:
+  {
+    GST_ERROR_OBJECT (ffmpegenc, "Rejecting time base %d/%d",
+        ffmpegenc->context->time_base.den, ffmpegenc->context->time_base.num);
+    return FALSE;
+  }
 }