avutil/frame: Use av_realloc_array(), improve overflow check

Also use sizeof of the proper type, namely sizeof(**sd)
and not sizeof(*sd).

Reviewed-by: Jan Ekström <jeebjp@gmail.com>
Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@outlook.com>
This commit is contained in:
Andreas Rheinhardt 2024-03-22 15:24:47 +01:00
parent b7bec5d3c9
commit d11b5e6096
1 changed files with 3 additions and 2 deletions

View File

@ -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;