summaryrefslogtreecommitdiff
path: root/libavcodec/utils.c
diff options
context:
space:
mode:
authorArttu Ylä-Outinen <arttu.yla-outinen@tut.fi>2016-01-18 20:54:34 +0100
committerLuca Barbato <lu_zero@gentoo.org>2016-01-19 20:47:49 +0100
commit7486418683bd2477772e03aab573cf846c12fb0d (patch)
tree4577ab5a16be82f16a8020a5285358c860e7748a /libavcodec/utils.c
parente59708bb9d94f67381f19344b5e021591eb711bf (diff)
lavc: Make sure that the effective timebase would not overflow
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>
Diffstat (limited to 'libavcodec/utils.c')
-rw-r--r--libavcodec/utils.c10
1 files changed, 10 insertions, 0 deletions
diff --git a/libavcodec/utils.c b/libavcodec/utils.c
index 29ba85fd21..e06ee664b5 100644
--- a/libavcodec/utils.c
+++ b/libavcodec/utils.c
@@ -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)) {