lavc: Make sure that the effective timebase would not overflow
authorArttu Ylä-Outinen <arttu.yla-outinen@tut.fi>
Mon, 18 Jan 2016 19:54:34 +0000 (20:54 +0100)
committerLuca Barbato <lu_zero@gentoo.org>
Tue, 19 Jan 2016 19:47:49 +0000 (20:47 +0100)
In the unlikely situation the user decides to set ticks_per_frame
and timebase to a value large enough to overflow.

Signed-off-by: Luca Barbato <lu_zero@gentoo.org>
libavcodec/utils.c

index 29ba85f..e06ee66 100644 (file)
@@ -1049,6 +1049,16 @@ FF_ENABLE_DEPRECATION_WARNINGS
 
         if (!avctx->rc_initial_buffer_occupancy)
             avctx->rc_initial_buffer_occupancy = avctx->rc_buffer_size * 3 / 4;
+
+        if (avctx->ticks_per_frame &&
+            avctx->ticks_per_frame > INT_MAX / avctx->time_base.num) {
+            av_log(avctx, AV_LOG_ERROR,
+                   "ticks_per_frame %d too large for the timebase %d/%d.",
+                   avctx->ticks_per_frame,
+                   avctx->time_base.num,
+                   avctx->time_base.den);
+            goto free_and_end;
+        }
     }
 
     if (avctx->codec->init && !(avctx->active_thread_type & FF_THREAD_FRAME)) {