diff mbox series

[FFmpeg-devel] lavc/vvc_parser: Fix integer overflow calculating framerate

Message ID 20240408182051.514137-1-post@frankplowman.com
State Accepted
Commit f499503073804e55540cad13743849a791449a98
Headers show
Series [FFmpeg-devel] lavc/vvc_parser: Fix integer overflow calculating framerate | expand

Checks

Context Check Description
yinshiyou/make_loongarch64 success Make finished
yinshiyou/make_fate_loongarch64 success Make fate finished
andriy/make_x86 success Make finished
andriy/make_fate_x86 success Make fate finished

Commit Message

Frank Plowman April 8, 2024, 6:20 p.m. UTC
num_units_in_tick and time_scale are both 32-bit unsigned integers.
Storing them as ints was causing overflows.

Signed-off-by: Frank Plowman <post@frankplowman.com>
---
 libavcodec/vvc_parser.c | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

Comments

James Almer April 8, 2024, 7:03 p.m. UTC | #1
On 4/8/2024 3:20 PM, Frank Plowman wrote:
> num_units_in_tick and time_scale are both 32-bit unsigned integers.
> Storing them as ints was causing overflows.
> 
> Signed-off-by: Frank Plowman <post@frankplowman.com>
> ---
>   libavcodec/vvc_parser.c | 4 ++--
>   1 file changed, 2 insertions(+), 2 deletions(-)
> 
> diff --git a/libavcodec/vvc_parser.c b/libavcodec/vvc_parser.c
> index a6a5be27ae..e3501fa139 100644
> --- a/libavcodec/vvc_parser.c
> +++ b/libavcodec/vvc_parser.c
> @@ -191,8 +191,8 @@ static void set_parser_ctx(AVCodecParserContext *s, AVCodecContext *avctx,
>   
>       if (sps->sps_ptl_dpb_hrd_params_present_flag &&
>           sps->sps_timing_hrd_params_present_flag) {
> -        int num = sps->sps_general_timing_hrd_parameters.num_units_in_tick;
> -        int den = sps->sps_general_timing_hrd_parameters.time_scale;
> +        uint32_t num = sps->sps_general_timing_hrd_parameters.num_units_in_tick;
> +        uint32_t den = sps->sps_general_timing_hrd_parameters.time_scale;
>   
>           if (num != 0 && den != 0)
>               av_reduce(&avctx->framerate.den, &avctx->framerate.num,

LGTM.
Nuo Mi April 9, 2024, 2:49 p.m. UTC | #2
On Tue, Apr 9, 2024 at 3:04 AM James Almer <jamrial@gmail.com> wrote:

> On 4/8/2024 3:20 PM, Frank Plowman wrote:
> > num_units_in_tick and time_scale are both 32-bit unsigned integers.
> > Storing them as ints was causing overflows.
> >
> > Signed-off-by: Frank Plowman <post@frankplowman.com>
> > ---
> >   libavcodec/vvc_parser.c | 4 ++--
> >   1 file changed, 2 insertions(+), 2 deletions(-)
> >
> > diff --git a/libavcodec/vvc_parser.c b/libavcodec/vvc_parser.c
> > index a6a5be27ae..e3501fa139 100644
> > --- a/libavcodec/vvc_parser.c
> > +++ b/libavcodec/vvc_parser.c
> > @@ -191,8 +191,8 @@ static void set_parser_ctx(AVCodecParserContext *s,
> AVCodecContext *avctx,
> >
> >       if (sps->sps_ptl_dpb_hrd_params_present_flag &&
> >           sps->sps_timing_hrd_params_present_flag) {
> > -        int num =
> sps->sps_general_timing_hrd_parameters.num_units_in_tick;
> > -        int den = sps->sps_general_timing_hrd_parameters.time_scale;
> > +        uint32_t num =
> sps->sps_general_timing_hrd_parameters.num_units_in_tick;
> > +        uint32_t den =
> sps->sps_general_timing_hrd_parameters.time_scale;
> >
> >           if (num != 0 && den != 0)
> >               av_reduce(&avctx->framerate.den, &avctx->framerate.num,
>
> LGTM.
>
Pushed this and others.
Thank you, Frank and James.

> _______________________________________________
> ffmpeg-devel mailing list
> ffmpeg-devel@ffmpeg.org
> https://ffmpeg.org/mailman/listinfo/ffmpeg-devel
>
> To unsubscribe, visit link above, or email
> ffmpeg-devel-request@ffmpeg.org with subject "unsubscribe".
>
diff mbox series

Patch

diff --git a/libavcodec/vvc_parser.c b/libavcodec/vvc_parser.c
index a6a5be27ae..e3501fa139 100644
--- a/libavcodec/vvc_parser.c
+++ b/libavcodec/vvc_parser.c
@@ -191,8 +191,8 @@  static void set_parser_ctx(AVCodecParserContext *s, AVCodecContext *avctx,
 
     if (sps->sps_ptl_dpb_hrd_params_present_flag &&
         sps->sps_timing_hrd_params_present_flag) {
-        int num = sps->sps_general_timing_hrd_parameters.num_units_in_tick;
-        int den = sps->sps_general_timing_hrd_parameters.time_scale;
+        uint32_t num = sps->sps_general_timing_hrd_parameters.num_units_in_tick;
+        uint32_t den = sps->sps_general_timing_hrd_parameters.time_scale;
 
         if (num != 0 && den != 0)
             av_reduce(&avctx->framerate.den, &avctx->framerate.num,