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 |
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 |
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.
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 --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,
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(-)