Message ID | GV1P250MB0737730CE97ED707D62BFFE68F312@GV1P250MB0737.EURP250.PROD.OUTLOOK.COM |
---|---|
State | Accepted |
Commit | d11b5e6096b888caa7e6c4d159f6c0c44d0ca83d |
Headers | show |
Series | [FFmpeg-devel,1/2] avcodec/libx265: Don't use AVBPrint unnecessarily | 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 Fri, Mar 22, 2024 at 4:41 PM Andreas Rheinhardt <andreas.rheinhardt@outlook.com> wrote: > > Also use sizeof of the proper type, namely sizeof(**sd) > and not sizeof(*sd). > > Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@outlook.com> > --- > libavutil/frame.c | 5 +++-- > 1 file changed, 3 insertions(+), 2 deletions(-) > > diff --git a/libavutil/frame.c b/libavutil/frame.c > index 7dd37e5490..d7a32cdc92 100644 > --- a/libavutil/frame.c > +++ b/libavutil/frame.c > @@ -721,10 +721,11 @@ static AVFrameSideData *add_side_data_from_buf(AVFrameSideData ***sd, > if (!buf) > return NULL; > > - if (*nb_sd > INT_MAX / sizeof(*sd) - 1) > + // *nb_sd + 1 needs to fit into an int and a size_t. > + if ((unsigned)*nb_sd >= FFMIN(INT_MAX, SIZE_MAX)) > return NULL; > > - tmp = av_realloc(*sd, (*nb_sd + 1) * sizeof(*sd)); > + tmp = av_realloc_array(*sd, sizeof(**sd), *nb_sd + 1); > if (!tmp) > return NULL; > *sd = tmp; > -- Thanks for noticing these things like the AVClass-usage, figuring out a workaround for the getter and improving on the overflow check as well as doing the AVBPrint to snprintf switch. Will have to think why I thought that AVClass thing was somehow a good idea. Set LGTM. Jan
diff --git a/libavutil/frame.c b/libavutil/frame.c index 7dd37e5490..d7a32cdc92 100644 --- a/libavutil/frame.c +++ b/libavutil/frame.c @@ -721,10 +721,11 @@ static AVFrameSideData *add_side_data_from_buf(AVFrameSideData ***sd, if (!buf) return NULL; - if (*nb_sd > INT_MAX / sizeof(*sd) - 1) + // *nb_sd + 1 needs to fit into an int and a size_t. + if ((unsigned)*nb_sd >= FFMIN(INT_MAX, SIZE_MAX)) return NULL; - tmp = av_realloc(*sd, (*nb_sd + 1) * sizeof(*sd)); + tmp = av_realloc_array(*sd, sizeof(**sd), *nb_sd + 1); if (!tmp) return NULL; *sd = tmp;
Also use sizeof of the proper type, namely sizeof(**sd) and not sizeof(*sd). Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@outlook.com> --- libavutil/frame.c | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-)