On 27/01/16 22:15, Derek Buitenhuis wrote:
> It could accidentally divide by zero if num was zero.
> 
> Signed-off-by: Derek Buitenhuis <derek.buitenh...@gmail.com>
> ---
>  libavcodec/utils.c | 2 +-
>  1 file changed, 1 insertion(+), 1 deletion(-)
> 
> diff --git a/libavcodec/utils.c b/libavcodec/utils.c
> index e06ee66..a3cb341 100644
> --- a/libavcodec/utils.c
> +++ b/libavcodec/utils.c
> @@ -1050,7 +1050,7 @@ 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 &&
> +        if (avctx->ticks_per_frame && avctx->time_base.num &&
>              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.",
> 

What about something like

diff --git a/libavcodec/utils.c b/libavcodec/utils.c
index e06ee66..abad71a 100644
--- a/libavcodec/utils.c
+++ b/libavcodec/utils.c
@@ -1050,6 +1050,14 @@ FF_ENABLE_DEPRECATION_WARNINGS
         if (!avctx->rc_initial_buffer_occupancy)
             avctx->rc_initial_buffer_occupancy = avctx->rc_buffer_size
* 3 / 4;

+        if (avctx->time_base.num <= 0 ||
+            avctx->time_base.den <= 0) {
+            av_log(avctx, AV_LOG_ERROR, "Impossible time base %d/%d.",
+                   avctx->time_base.num,
+                   avctx->time_base.den);
+            goto free_and_end;
+        }
+
         if (avctx->ticks_per_frame &&
             avctx->ticks_per_frame > INT_MAX / avctx->time_base.num) {
             av_log(avctx, AV_LOG_ERROR,
_______________________________________________
libav-devel mailing list
libav-devel@libav.org
https://lists.libav.org/mailman/listinfo/libav-devel

Reply via email to