[FFmpeg-devel] [FFmpeg-cvslog] h264_metadata: Avoid integer overflow in bitrate

Carl Eugen Hoyos ceffmpeg at gmail.com
Thu Sep 27 00:50:32 EEST 2018


2018-09-25 0:16 GMT+02:00, Mark Thompson <git at videolan.org>:
> ffmpeg | branch: master | Mark Thompson <sw at jkqxz.net> | Mon Sep 24 22:45:50
> 2018 +0100| [321294adb788b5e143fcec776cdf1daf79ed921c] | committer: Mark
> Thompson
>
> h264_metadata: Avoid integer overflow in bitrate
>
> Fixes CID #1439664.
>
>> http://git.videolan.org/gitweb.cgi/ffmpeg.git/?a=commit;h=321294adb788b5e143fcec776cdf1daf79ed921c
> ---
>
>  libavcodec/h264_metadata_bsf.c | 4 ++--
>  1 file changed, 2 insertions(+), 2 deletions(-)
>
> diff --git a/libavcodec/h264_metadata_bsf.c b/libavcodec/h264_metadata_bsf.c
> index 991fcfa537..bf37528234 100644
> --- a/libavcodec/h264_metadata_bsf.c
> +++ b/libavcodec/h264_metadata_bsf.c
> @@ -226,10 +226,10 @@ static int h264_metadata_update_sps(AVBSFContext *bsf,
>
>              if (sps->vui.nal_hrd_parameters_present_flag) {
>                  bit_rate =
> (sps->vui.nal_hrd_parameters.bit_rate_value_minus1[0] + 1) *
> -                     (1 << (sps->vui.nal_hrd_parameters.bit_rate_scale +
> 6));

How can this overflow?

> +                    (INT64_C(1) <<
> (sps->vui.nal_hrd_parameters.bit_rate_scale + 6));
>              } else if (sps->vui.vcl_hrd_parameters_present_flag) {
>                  bit_rate =
> (sps->vui.vcl_hrd_parameters.bit_rate_value_minus1[0] + 1) *
> -                     (1 << (sps->vui.vcl_hrd_parameters.bit_rate_scale +
> 6));

Same here: Isn't the maximum (15+6) ?

> +                    (INT64_C(1) <<
> (sps->vui.vcl_hrd_parameters.bit_rate_scale + 6));
>                  // Adjust for VCL vs. NAL limits.
>                  bit_rate = bit_rate * 6 / 5;
>              } else {

Carl Eugen


More information about the ffmpeg-devel mailing list